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商業版本:行業演算法版、LLM智能問答版、高效能檢索版、向量檢索版、召回引擎版。
使用限制
OpenSearch Writer支援使用Serverless資源群組(推薦)和獨享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 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(行業演算法版、LLM智能問答版、高效能檢索版)
{
"type": "job",
"version": "1.0",
"configuration": {
"reader": {},
"writer": {
"plugin": "opensearch",
"parameter": {
"accessId": "*********",
"accessKey": "********",
"host": "http://yyyy.aliyuncs.com",
"endpoint":"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指令碼參數(行業演算法版、LLM智能問答版、高效能檢索版)
參數 | 描述 | 是否必選 | 預設值 |
accessId | 存取金鑰中的AccessKey ID。 | 是 | 無 |
accessKey | 存取金鑰中的AccessKey Secret,相當於登入密碼。 | 是 | 無 |
host | OpenSearch流量網域名稱,可登入OpenSearch控制台,進入對應的執行個體詳情擷取。 | 是 | 無 |
endpoint | OpenSearch管控網域名稱,可在OpenSearch對應版本官網擷取,如行業演算法:服務接入地址(Endpoint)。 | 是 | 無 |
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 |
Writer指令碼Demo(向量檢索版、召回引擎版)
{
"stepType": "opensearch",
"parameter": {
"indexName": "",
"column": [
{
"name": "col3double",
"type": "DOUBLE"
},
{
"name": "col2vector",
"type": "MULTI_FLOAT"
}
],
"datasource": "zm_test_vector_01",
"batchSize": "500",
"table": "demotable"
},
"name": "Writer",
"category": "writer"
}Writer指令碼參數(向量檢索版、召回引擎版)
參數 | 描述 | 是否必選 | 預設值 |
table | 寫入資料的表名,不能填寫多張表,因為DataX不支援同時匯入多張表。 | 是 | 無 |
column | 需要匯入的欄位列表。當匯入全部欄位時,可以配置為 OpenSearch支援列篩選、列換序,例如:表有a、b和c三個欄位,只需同步c,b兩個欄位,則可以配置為 | 是 | 無 |
batchSize | 單次寫入的資料條數。OpenSearch寫入為批量寫入,通常OpenSearch的優勢在於查詢,寫入的每秒處理事務數(TPS)不高,請根據帳號申請的資源進行設定。 通常OpenSearch的單條資料小於1 MB,單次寫入小於2 MB。 | 如果是分區表,該選項必填。如果是非分區表,該選項不可填寫。 | 300 |