DataWorksData Integration支援使用Redis Writer將資料寫至Redis,本文為您介紹DataWorks的Redis資料離線寫入能力。
使用限制
資料匯入處理程序支援使用Serverless資源群組(推薦)和獨享Data Integration資源群組。
使用Redis Writer向Redis寫入資料時,如果Value類型是List,重跑同步任務的同步結果不是等冪的。因此,如果Value類型是List ,重跑同步任務時,需要您手動清空Redis上相應的資料。
支援的欄位類型
Redis支援較豐富的儲存value類型,包括String(字串)、List(鏈表)、Set(集合)、ZSet(sorted set有序集合)和Hash(雜湊類型)。Redis詳情請參見redis.io。
資料同步任務開發
資料同步任務的配置入口和通用配置流程可參見下文的配置指導。
操作流程請參見通過嚮導模式配置離線同步任務、通過指令碼模式配置離線同步任務。
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
附錄:指令碼Demo與參數說明
離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下資料來源的參數配置詳情。
Writer指令碼Demo
以下以讀取MySQL資料並寫入Redis為例,為您樣本讀取端MySQL Reader和寫入端Redis Writer的指令碼代碼範例。寫入Redis的資料同步作業。
{
"type":"job",
"version":"2.0", //版本號碼
"steps":[
{ //以下為讀取端代碼範例,讀取端的參數詳情可查看對應資料來源的Reader外掛程式文檔。
"stepType":"mysql",
"parameter": {
"envType": 0,
"datasource": "xc_mysql_demo2",
"column": [
"id",
"value",
"table"
],
"connection": [
{
"datasource": "xc_mysql_demo2",
"table": []
}
],
"where": "",
"splitPk": "",
"encoding": "UTF-8"
},,
"name":"Reader",
"category":"reader"
},
{//以下為寫入端代碼範例。
"stepType":"redis", //Redis Writer的外掛程式名,配置為redis。
"parameter":{ //以下為Redis Writer的主要參數。
"expireTime":{ //Redis value值緩衝失效時間,可配置為seconds類型或unixtime類型。"seconds":"1000"
},
"keyFieldDelimiter":"u0001", //寫入Redis的key的分隔字元。
"dateFormat":"yyyy-MM-dd HH:mm:ss",//寫入Redis時,Date的時間格式。
"datasource":"xc_mysql_demo2", //資料來源名稱,需與添加的資料來源名稱保持一致。
"envType": 0, //環境類型,開發環境:1,生產環境:0。
"writeMode":{ //寫入模式。
"type":"string" //value類型。
"mode":"set", //value是某類型時,寫入的模式。
"valueFieldDelimiter":"u0001", //value之間的分隔字元。
},
"keyIndexes":[0,1], //用於源端到Redis的映射,指定源端需要作為key的列(第1列從0開始),如果源端第1列、第2列組合作為Redis的key,這裡配置為[0,1]。
"batchSize":"1000" //一次性批量提交的記錄數大小。
"column": [ // 對於redis類型為string,set操作,如果此column沒有配置那麼value的格式是分隔字元串連的字串(csv格式,假設ID的值為1,name的值為"小王",age的值為18,sex的值為男,redis的value結果樣本:"18::男");如果配置了column,且按照如下格式配置,則redis 的value將把原列的列名和值寫入成JSON格式,假設ID的值為1,name的值為"小王",age的值為18,sex的值為男,redis的value結果樣本{"id":1,"name":"小王","age":18,"sex":"男"}
{
"name": "id",
"index": "0"
},
{
"name": "name",
"index": "1"
},
{
"name": "age",
"index": "2"
},
{
"name": "sex",
"index": "3"
}
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0" //錯誤記錄數。
},
"speed":{
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":1, //作業並發數。
"mbps":"12"//限流,此處1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Writer指令碼參數
參數 | 描述 | 是否必選 | 預設值 |
expireTime | Redis value值緩衝失效時間,單位為秒。如果不填該配置項,則該配置項取值為預設值 expireTime的配置方式有以下兩種:
| 否 | 0(0表示永久有效) |
keyFieldDelimiter | 寫入Redis的Key分隔字元。例如key=key1\u0001id,如果有多個Key需要拼接時,該值為必填項。如果只有一個Key,則可以忽略該配置項。 | 否 | \u0001 |
dateFormat | 寫入Redis時,Date的時間格式為yyyy-MM-dd HH:mm:ss。 | 否 | 無 |
datasource | 資料來源名稱。該配置項填寫的內容必須與添加的資料來源名稱保持一致。 | 是 | 無 |
selectDatabase | 寫入Redis的庫選擇("0"~"databases"),Redis叢集無法做資料庫選擇。 | 否 | 預設寫到0號庫 |
writeMode | Redis Writer寫入Redis的value類型包含以下5種:
不同的value類型,writeMode配置會略有差異,詳細說明可參見下文writeMode參數說明。 說明 配置Redis Writer時,您需要配置writeMode為支援的5種寫入資料類型中的1種類型,且只能配置1種。如果您沒有配置,則writeMode取值為預設值 | 否 | string |
keyIndexes | 指定作為key的源端列的列序號。列序號從0開始(即第1列的序號是0,第2列的序號是1,依次類推)。
說明 配置keyIndexes後,Redis Writer會將其餘的列作為Value。如果您只想同步源表的某幾列作為Key,某幾列作為Value,則無需同步所有欄位,在Reader外掛程式端指定好column進行列篩選即可。 | 是 | 無 |
batchSize | 一次性批量提交的記錄數大小。該值可以極大減少資料同步系統與Redis的網路互動次數,並提升整體輸送量。如果該值設定過大,會導致資料同步運行進程OOM異常。 | 否 | 1,000 |
timeout | 寫入Redis的逾時時間,單位為毫秒。 | 否 | 30,000 |
redisMode | Redis的運行模式。具體如下:
說明 支援使用Serverless資源群組(推薦)和獨享Data Integration資源群組。 | 否 | 無 |
column | 寫入Redis的column配置。對於Redis對應類型為string,set操作時:
| 否 | 無 |
writeMode參數說明
配置Redis Writer時,您需要配置writeMode為支援的5種寫入資料類型中的1種類型,且只能配置1種。如果您沒有配置,則writeMode取值為預設值string
。
value類型 | type參數(必選) | mode參數(必選) | valueFieldDelimiter參數(非必選) | writeMode配置範例 |
字串(string) | type需配置為 | mode為寫入模式參數,value為字串(string)時:
| valueFieldDelimiter為value之間的分隔字元,預設值為
|
|
字串列表(list) | type需配置為 | mode為寫入模式參數,value為字串列表(list)時,可配置為:
|
| |
字串集合(set) | type需配置為 | mode為寫入模式參數,value為字串集合(set)時:
|
| |
有序字串集合(zset) | type需配置為 | mode為寫入模式參數,value為有序字串集合(zset)時:
| 無需配置此參數。 |
說明 當value類型為zset時,資料來源的每行記錄均需遵循相應的規範。即每行記錄除key外,只能有1對score和value,並且score必須在value前面,Redis Writer方可解析出column對應的是score或value。 |
雜湊(hash) | type需配置為 | mode為寫入模式參數,value為雜湊(hash)時:
| 無需配置此參數。 |
說明 當value類型為hash時,資料來源的每行記錄都需遵循相應的規範。即每行記錄除key外,只能有1對attribute和value,並且attribute必須在value前面,Redis Writer方可解析出column對應的是attribute或value。 |