AnalyticDB for MySQL 2.0數據源為您提供讀取和寫入AnalyticDB for MySQL 2.0的雙向通道,本文為您介紹DataWorks的AnalyticDB for MySQL 2.0數據同步的能力支持情況。
使用限制
離線同步支持讀取視圖(VIEW)表。
AnalyticDB for MySQL 2.0 Reader不支持multivalue,否則同步任務會直接異常退出。
支持的字段類型
離線讀
AnalyticDB for MySQL 2.0 Reader針對AnalyticDB for MySQL 2.0類型的轉換列表,如下所示。
AnalyticDB for MySQL 2.0類型 | DataX類型 | MaxCompute類型 |
BIGINT | LONG | BIGINT |
TINYINT | LONG | INT |
TIMESTAMP | DATE | DATETIME |
VARCHAR | STRING | STRING |
SMALLINT | LONG | INT |
INT | LONG | INT |
FLOAT | STRING | DOUBLE |
DOUBLE | STRING | DOUBLE |
DATE | DATE | DATETIME |
TIME | DATE | DATETIME |
離線寫
AnalyticDB for MySQL 2.0 Writer針對AnalyticDB for MySQL 2.0類型的轉換列表,如下所示。
類型 | AnalyticDB for MySQL 2.0數據類型 |
整數類 | INT、TINYINT、SMALLINT、BIGINT |
浮點類 | FLOAT和DOUBLE |
字符串類 | VARCHAR |
日期時間類 | DATE和TIMESTAMP |
布爾類 | BOOLEAN |
創建數據源
在進行數據同步任務開發時,您需要在DataWorks上創建一個對應的數據源,操作流程請參見創建并管理數據源,詳細的配置參數解釋可在配置界面查看對應參數的文案提示。
數據同步任務開發
數據同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
操作流程請參見通過向導模式配置離線同步任務、通過腳本模式配置離線同步任務。
腳本模式配置的全量參數和腳本Demo請參見下文的附錄:腳本Demo與參數說明。
整庫離線讀同步配置指導
操作流程請參見數據集成側同步任務配置。
附錄:腳本Demo與參數說明
離線任務腳本配置方式
如果您配置離線任務時使用腳本模式的方式進行配置,您需要按照統一的腳本格式要求,在任務腳本中編寫相應的參數,詳情請參見通過腳本模式配置離線同步任務,以下為您介紹腳本模式下數據源的參數配置詳情。
Reader腳本Demo
{
"type": "job",
"steps": [
{
"stepType": "ads",
"parameter": {
"datasource": "ads_demo",
"table": "th_test",
"column": [
"id",
"testtinyint",
"testbigint",
"testdate",
"testtime",
"testtimestamp",
"testvarchar",
"testdouble",
"testfloat"
],
"odps": {
"accessId": "<yourAccessKeyId>",
"accessKey": "<yourAccessKeySecret>",
"account": "*********@aliyun.com",
"odpsServer": " http://service.cn-shanghai-vpc.maxcompute.aliyun-inc.com/api",
"tunnelServer": "http://dt.cn-shanghai-vpc.maxcompute.aliyun-inc.com",
"accountType": "aliyun",
"project": "odps_test"
},
"mode": "ODPS"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"concurrent": 2,
"throttle": true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"mbps":"12"http://限流,此處1mbps = 1MB/s。
}
}
}
Reader腳本參數
參數 | 描述 | 是否必選 | 默認值 |
table | 需要導出的表的名稱。 | 是 | 無 |
column | 列名,如果沒有,則為全部。 | 否 | * |
limit | 限制導出的記錄數。 | 否 | 無 |
where | where條件,方便添加篩選條件,此處的String會被直接作為SQL條件添加到查詢語句中,例如 | 否 | 無 |
mode | 目前支持Select和ODPS2種導入類型。
| 否 | Select |
odps.accessKey | 當mode=ODPS時必填,AnalyticDB for MySQL 2.0訪問ODPS使用的云賬號AccessKey,需要有Describe、Create、Select、Alter、Update和Drop權限。 | 否 | 無 |
odps.accessId | 當mode=ODPS時必填,AnalyticDB for MySQL 2.0訪問ODPS使用的云賬號AccessID,需要有Describe、Create、Select、Alter、Update和Drop權限。 | 否 | 無 |
odps.odpsServer | 當mode=ODPS時必填,ODPS API地址。 | 否 | 無 |
odps.tunnelServer | 當mode=ODPS時必填,ODPS Tunnel地址。 | 否 | 無 |
odps.project | 當mode=ODPS時必填,ODPS Project名稱。 | 否 | 無 |
odps.accountType | 當mode=ODPS時生效,ODPS訪問賬號類型。 | 否 | aliyun |
Writer腳本Demo
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"stream",
"parameter":{
"name":"Reader",
"category":"reader"
},
{
"stepType":"ads",//插件名。
"parameter":{
"partition":"",//目標表的分區名稱。
"datasource":"",//數據源。
"column":[//字段。
"id"
],
"writeMode":"insert",//寫入模式。
"batchSize":"256",//一次性批量提交的記錄數大小。
"table":"",//表名。
"overWrite":"true"http://AnalyticDB for MySQL 2.0寫入是否覆蓋當前寫入的表,true為覆蓋寫入,false為不覆蓋。(追加)寫入。當 writeMode 為 Load 時,該值才會生效。
"options.ignoreEmptySource":true//忽略源頭數據空文件報錯信息,任務不報錯,默認true,不配置默認是true,設置為false讀不到源頭數據任務會報錯
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"http://錯誤記錄數。
},
"speed":{
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":1, //作業并發數。
"mbps":"12"http://限流,此處1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Writer腳本參數
參數 | 描述 | 必選 | 默認值 |
連接url | AnalyticDB for MySQL 2.0連接信息,格式為Address:Port。 | 是 | 無 |
數據庫 | AnalyticDB for MySQL 2.0的數據庫名稱。 | 是 | 無 |
Access Id | AnalyticDB for MySQL 2.0對應的AccessKey Id。 | 是 | 無 |
Access Key | AnalyticDB for MySQL 2.0對應的AccessKey Secret。 | 是 | 無 |
datasource | 數據源名稱,腳本模式支持添加數據源,此配置項填寫的內容必須與添加的數據源名稱保持一致。 | 是 | 無 |
table | 目標表的表名稱。 | 是 | 無 |
partition | 目標表的分區名稱,當目標表為普通表,需要指定該字段。 | 否 | 無 |
writeMode | AnalyticDB for MySQL 2.0 Writer實現了兩種模式向AnalyticDB for MySQL 2.0導入數據。
| 是 | 無 |
column | 目的表字段列表,可以為["*"],或者具體的字段列表,例如["a", "b", "c"]。 | 是 | 無 |
suffix | AnalyticDB for MySQL 2.0 url配置項的格式為 | 否 | 無 |
batchSize | AnalyticDB for MySQL 2.0提交數據寫的批量條數,當writeMode為insert時,該值才會生效。 | writeMode為insert時,為必選。 | 無 |
bufferSize | DataX數據收集緩沖區大小,緩沖區的目的是積累一個較大的Buffer,源頭的數據首先進入到此Buffer中進行排序,排序完成后再提交至AnalyticDB for MySQL 2.0。排序是根據AnalyticDB for MySQL 2.0的分區列模式進行的,排序的目的是數據順序對AnalyticDB for MySQL 2.0服務端更友好(出于性能考慮)。 BufferSize緩沖區中的數據會經過batchSize批量提交至AnalyticDB for MySQL 2.0,通常需要設置bufferSize為batchSize數量的多倍。當writeMode為insert時,該值才會生效。 | writeMode為insert時,為必選。 | 默認不配置不開啟此功能。 |