DataWorks數據集成支持使用OpenSearch Writer將數據寫至OpenSearch,本文為您介紹DataWorks的OpenSearch數據離線寫入能力。
支持的版本
V2版本請參見請求結構。
V3版本使用二方包,依賴pom為:com.aliyun.opensearch aliyun-sdk-opensearch 2.1.3。
如果您需要使用OpenSearchWriter插件,請務必使用JDK 1.6-32及以上版本,您可以使用
java -version
查看Java版本號。
使用限制
OpenSearch Writer支持使用Serverless資源組(推薦)和獨享數據集成資源組,不支持使用自定義資源組。
OpenSearch的列是無序的,因此OpenSearch Writer寫入時,需嚴格按照指定的列的順序寫入。如果指定的列比OpenSearch的列少,則其余列使用默認值或null。
例如,您需要導入的字段列表有b、c兩個字段,但OpenSearch表中的字段有a、b、c三列,在列配置中可以寫為"column":["c","b"],表示會把Reader的第一列和第二列導入OpenSearch的c字段和b字段,而OpenSearch表中新插入的a字段會被置為默認值或null。
當前僅支持使用腳本模式將離線數據寫入OpenSearch。
支持的字段類型
OpenSearch Writer支持大部分OpenSearch類型,請注意檢查您的數據類型。OpenSearch Writer針對OpenSearch類型的轉換列表,如下所示。
類型分類 | OpenSearch數據類型 |
整數類 | INT |
浮點類 | DOUBLE和FLOAT |
字符串類 | TEXT、LITERAL和SHORT_TEXT |
日期時間類 | INT |
布爾類 | LITERAL |
數據同步任務開發
數據同步任務的配置入口和通用配置流程可參見下文的配置指導。
操作流程請參見通過腳本模式配置離線同步任務。
腳本模式配置的全量參數和腳本Demo請參見下文的附錄:腳本Demo與參數說明。
常見問題
列配置錯誤的處理
為保證寫入數據的可靠性,避免多余列數據丟失造成數據質量故障。對于寫入多余的列,OpenSearch Writer將報錯。例如OpenSearch表字段為a、b、c,如果OpenSearch Writer寫入的字段多于3列,OpenSearch Writer將報錯。
表配置注意事項
OpenSearch Writer一次只能寫入一個表。
任務重跑和Failover
重跑后會自動根據ID覆蓋。所以插入OpenSearch的列中,必須有一個ID,該ID是OpenSearch的一行記錄的唯一標識。唯一標識一樣的數據,會被覆蓋掉。
附錄:腳本Demo與參數說明
離線任務腳本配置方式
如果您配置離線任務時使用腳本模式的方式進行配置,您需要按照統一的腳本格式要求,在任務腳本中編寫相應的參數,詳情請參見通過腳本模式配置離線同步任務,以下為您介紹腳本模式下數據源的參數配置詳情。
Writer腳本Demo
{
"type": "job",
"version": "1.0",
"configuration": {
"reader": {},
"writer": {
"plugin": "opensearch",
"parameter": {
"accessId": "*********",
"accessKey": "********",
"host": "http://yyyy.aliyuncs.com",
"indexName": "datax_xxx",
"table": "datax_yyy",
"column": [
"appkey",
"id",
"title",
"gmt_create",
"pic_default"
],
"batchSize": 500,
"writeMode": add,
"version":"v2",
"ignoreWriteError": false
}
}
}
}
Writer腳本參數
參數 | 描述 | 是否必選 | 默認值 |
accessId | 訪問密鑰中的AccessKey ID。 | 是 | 無 |
accessKey | 訪問密鑰中的AccessKey Secret,相當于登錄密碼。 | 是 | 無 |
host | OpenSearch連接的服務地址,您可以在應用詳情頁面進行查看。通常生產的服務地址為: | 是 | 無 |
indexName | OpenSearch項目的名稱。 | 是 | 無 |
table | 寫入數據的表名,不能填寫多張表,因為DataX不支持同時導入多張表。 | 是 | 無 |
column | 需要導入的字段列表。當導入全部字段時,可以配置為 OpenSearch支持列篩選、列換序,例如:表有a、b和c三個字段,只需同步c,b兩個字段,則可以配置為 | 是 | 無 |
batchSize | 單次寫入的數據條數。OpenSearch寫入為批量寫入,通常OpenSearch的優勢在于查詢,寫入的每秒處理事務數(TPS)不高,請根據賬號申請的資源進行設置。 通常OpenSearch的單條數據小于1 MB,單次寫入小于2 MB。 | 如果是分區表,該選項必填。如果是非分區表,該選項不可填寫。 | 300 |
writeMode | OpenSearch Writer通過配置"writeMode":"add/update",保證寫入的冪等性:
| 是 | 無 |
ignoreWriteError | 忽略寫錯誤。 配置示例: | 否 | false |
version | OpenSearch的版本信息,例如 | 否 | v2 |