DataWorksData Integration支援使用OpenSearch Writer將資料寫至OpenSearch,本文為您介紹DataWorks的OpenSearch資料離線寫入能力。
支援的版本
- V3版本使用二方包,依賴pom為:com.aliyun.opensearch aliyun-sdk-opensearch 2.1.3。
- 如果您需要使用OpenSearchWriter外掛程式,請務必使用JDK 1.6-32及以上版本,您可以使用
java -version
查看Java版本號碼。
使用限制
- OpenSearch Writer僅支援使用獨享Data Integration資源群組,不支援使用公用Data Integration資源群組和自訂資源群組。
- OpenSearch的列是無序的,因此OpenSearch Writer寫入時,需嚴格按照指定的列的順序寫入。如果指定的列比OpenSearch的列少,則其餘列使用預設值或null。
例如,您需要匯入的欄位列表有b、c兩個欄位,但OpenSearch表中的欄位有a、b、c三列,在列配置中可以寫為"column":["c","b"],表示會把Reader的第一列和第二列匯入OpenSearch的c欄位和b欄位,而OpenSearch表中新插入的a欄位會被置為預設值或null。
- 當前僅支援使用指令碼模式將離線資料寫入OpenSearch。
支援的欄位類型
類型分類 | OpenSearch資料類型 |
整數類 | INT |
浮點類 | DOUBLE和FLOAT |
字串類 | TEXT、LITERAL和SHORT_TEXT |
日期時間類 | INT |
布爾類 | LITERAL |
資料同步任務開發
- 操作流程請參見通過指令碼模式配置離線同步任務。
- 指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:OpenSearch指令碼Demo與參數說明。
常見問題
列配置錯誤的處理
為保證寫入資料的可靠性,避免多餘列資料丟失造成資料品質故障。對於寫入多餘的列,OpenSearch Writer將報錯。例如OpenSearch表欄位為a、b、c,如果OpenSearch Writer寫入的欄位多於3列,OpenSearch Writer將報錯。
表配置注意事項
OpenSearch Writer一次只能寫入一個表。
任務重跑和Failover
重跑後會自動根據ID覆蓋。所以插入OpenSearch的列中,必須有一個ID,該ID是OpenSearch的一行記錄的唯一標識。唯一標識一樣的資料,會被覆蓋掉。
附錄:OpenSearch指令碼Demo與參數說明
附錄:離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的reader參數和writer參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數和Writer參數的指導詳情。
OpenSearch 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
}
}
}
}
OpenSearch Writer指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
accessId | 存取金鑰中的AccessKey ID。 | 是 | 無 |
accessKey | 存取金鑰中的AccessKey Secret,相當於登入密碼。 | 是 | 無 |
host | OpenSearch已連線的服務地址,您可以在應用詳情頁面進行查看。 | 是 | 無 |
indexName | OpenSearch專案的名稱。 | 是 | 無 |
table | 寫入資料的表名,不能填寫多張表,因為DataX不支援同時匯入多張表。 | 是 | 無 |
column | 需要匯入的欄位列表。當匯入全部欄位時,可以配置為"column":["*"] 。當需要插入部分OpenSearch列時,填寫需要插入的列,例如:"column":["id","name"] 。 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的版本資訊,例如"version":"v3" 。由於V2版本對於push操作的限制較多,建議使用V3版本。 | 否 | v2 |