KingbaseES數(shù)據(jù)源為您提供讀取和寫入KingbaseES雙向通道的功能,本文為您介紹DataWorks的KingbaseES數(shù)據(jù)同步的能力支持情況。
使用限制
目前該數(shù)據(jù)源僅支持Serverless資源組(推薦)和獨享數(shù)據(jù)集成資源組。
整個同步任務必須具備
insert/replace into
的權限。配置同步任務時,您可以在preSql和postSql中,通過指定語句判斷是否需要其它權限。
支持的字段類型
KingbaseES Reader針對KingbaseES類型的轉換列表,如下所示。
類型分類 | 數(shù)據(jù)源的數(shù)據(jù)類型 |
整數(shù)類 | INT、TINYINT、SMALLINT、MEDIUMINT和BIGINT |
浮點類 | FLOAT、DOUBLE和DECIMAL |
字符串類 | VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT |
日期時間類 | DATE、DATETIME、TIMESTAMP、TIME和YEAR |
布爾型 | BIT和BOOL |
二進制類 | TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB和VARBINARY |
除上述羅列字段類型外,其它類型均不支持。
KingbaseES Reader插件將tinyint(1)視作整型。
創(chuàng)建數(shù)據(jù)源
在進行數(shù)據(jù)同步任務開發(fā)時,您需要在DataWorks上創(chuàng)建一個對應的數(shù)據(jù)源,操作流程請參見創(chuàng)建并管理數(shù)據(jù)源,詳細的配置參數(shù)解釋可在配置界面查看對應參數(shù)的文案提示。
數(shù)據(jù)同步任務開發(fā)
數(shù)據(jù)同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
操作流程請參見通過向導模式配置離線同步任務、通過腳本模式配置離線同步任務。
腳本模式配置的全量參數(shù)和腳本Demo請參見下文的附錄:腳本Demo與參數(shù)說明。
附錄:腳本Demo與參數(shù)說明
離線任務腳本配置方式
如果您配置離線任務時使用腳本模式的方式進行配置,您需要按照統(tǒng)一的腳本格式要求,在任務腳本中編寫相應的參數(shù),詳情請參見通過腳本模式配置離線同步任務,以下為您介紹腳本模式下數(shù)據(jù)源的參數(shù)配置詳情。
Reader腳本Demo
配置單庫單表
{ "type":"job", "version":"2.0",//版本號。 "steps":[ { "stepType":"kingbasees",//插件名。 "parameter":{ "column":[//列名。 "id" ], "connection":[ { "querySql":["select a,b from join1 c join join2 d on c.id = d.id;"], //使用字符串的形式,將querySql寫在connection中。 "datasource":"",//數(shù)據(jù)源。 "table":[//表名,即使只有一張表,也必須以[]的數(shù)組形式書寫。 "xxx" ] } ], "where":"",//過濾條件。 "splitPk":"",//切分鍵。 "encoding":"UTF-8"http://編碼格式。 }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"http://錯誤記錄數(shù)。 }, "speed":{ "throttle":true,//當throttle值為false時,mbps參數(shù)不生效,表示不限流;當throttle值為true時,表示限流。 "concurrent":1, //作業(yè)并發(fā)數(shù)。 "mbps":"12"http://限流,此處1mbps = 1MB/s。 } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
配置分庫分表
說明分庫分表是指在KingbaseES Reader端可以選擇多個KingbaseES數(shù)據(jù)表,且表結構保持一致。
{ "type": "job", "version": "1.0", "configuration": { "reader": { "plugin": "kingbasees", "parameter": { "connection": [ { "table": [ "tbl1", "tbl2", "tbl3" ], "datasource": "datasourceName1" }, { "table": [ "tbl4", "tbl5", "tbl6" ], "datasource": "datasourceName2" } ], "singleOrMulti": "multi", "splitPk": "db_id", "column": [ "id", "name", "age" ], "where": "1 < id and id < 100" } }, "writer": { } } }
Reader腳本參數(shù)
參數(shù) | 描述 |
username | 用戶名。 |
password | 密碼。 |
column | 需要同步的字段名稱。如果需要同步所有列,請使用星號(*)。 |
table | 需要同步的表名。 |
jdbcUrl | 連接KingbaseES的JDBC URL。例如,jdbc:kingbase8://127.0.0.1:30215?currentschema=TEST。 |
splitPk | KingbaseES表中的某個字段作為同步的切分字段,切分字段有助于多并發(fā)同步KingbaseES表。 切分字段需要是數(shù)值整型的字段,如果沒有該類型,則可以不填。 |
Writer腳本Demo
腳本配置示例如下所示。
{
"type":"job",
"version":"2.0",//版本號。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"kingbasees",//插件名。
"parameter":{
"postSql":[],//導入后的準備語句。
"datasource":"",//數(shù)據(jù)源。
"column":[//列名。
"id",
"value"
],
"batchSize":1024,//一次性批量提交的記錄數(shù)大小。
"table":"",//表名。
"preSql":[
"delete from XXX;" //導入前的準備語句。
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{//錯誤記錄數(shù)。
"record":"0"
},
"speed":{
"throttle":true,//當throttle值為false時,mbps參數(shù)不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":1, //作業(yè)并發(fā)數(shù)。
"mbps":"12"http://限流,此處1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Writer腳本參數(shù)
參數(shù) | 描述 | 是否必選 | 默認值 |
datasource | 數(shù)據(jù)源名稱,腳本模式支持添加數(shù)據(jù)源,此配置項填寫的內容必須與添加的數(shù)據(jù)源名稱保持一致。 | 是 | 無 |
table | 選取的需要同步的表名稱。 | 是 | 無 |
column | 目標表需要寫入數(shù)據(jù)的字段,字段之間用英文所逗號分隔,例如 如果要依次寫入全部列,使用星號(*)表示, 例如 說明 當來源端字段名稱包含斜杠(/),需要使用反斜杠加雙引號(\"your_column_name\")進行轉義,例如,字段名稱為/abc/efg,則轉義后字段名稱為\"/abc/efg\"。 | 是 | 無 |
preSql | 執(zhí)行數(shù)據(jù)同步任務之前率先執(zhí)行的SQL語句。目前向導模式僅允許執(zhí)行一條SQL語句,腳本模式可以支持多條SQL語句。例如,執(zhí)行前清空表中的舊數(shù)據(jù):
說明 當有多條SQL語句時,不支持SQL事務原子性。 | 否 | 無 |
postSql | 執(zhí)行數(shù)據(jù)同步任務之后執(zhí)行的SQL語句,目前向導模式僅允許執(zhí)行一條SQL語句,腳本模式可以支持多條SQL語句。例如,加上某一個時間戳: | 否 | 無 |
batchSize | 一次性批量提交的記錄數(shù)大小,該值可以極大減少數(shù)據(jù)同步系統(tǒng)與數(shù)據(jù)源的網絡交互次數(shù),并提升整體吞吐量。如果該值設置過大,會導致數(shù)據(jù)同步運行進程OOM異常。 | 否 | 1024 |