全部產品
Search
文件中心

DataWorks:AnalyticDB for MySQL 3.0資料來源

更新時間:Jun 19, 2024

AnalyticDB for MySQL 3.0資料來源為您提供讀取和寫入AnalyticDB for MySQL 3.0雙向通道的功能,本文為您介紹DataWorks的AnalyticDB for MySQL 3.0資料同步的能力支援情況。

使用限制

  • ADB湖倉版資料來源不支援在公用資源群組配置以及運行同步任務。

  • 如果ADB資料來源配置的執行個體從數倉版切換到了湖倉版,使用該資料來源運行在公用資源群組上的同步任務將會失敗,建議切換前,確認是否有運行在公用資源群組上的同步任務,並且將其切換到獨享資源群組運行。

  • 離線同步支援閱讀檢視(VIEW)表。

支援的欄位類型

離線讀

AnalyticDB for MySQL 3.0 Reader針對AnalyticDB for MySQL 3.0類型的轉換列表,如下表所示。

類型分類

AnalyticDB for MySQL 3.0類型

整數類

INT、INTEGER、TINYINT、SMALLINT和BIGINT

浮點類

FLOAT、DOUBLE和DECIMAL

字串類

VARCHAR

日期時間類

DATE、DATETIME、TIMESTAMP和TIME

布爾類

BOOLEAN

離線寫

AnalyticDB for MySQL 3.0 Writer針對AnalyticDB for MySQL 3.0類型的轉換列表,如下所示。

類型

AnalyticDB for MySQL 3.0資料類型

整數類

INT、INTEGER、TINYINT、SMALLINT和BIGINT

浮點類

FLOAT、DOUBLE和DECIMAL

字串類

VARCHAR

日期時間類

DATE、DATETIME、TIMESTAMP和TIME

布爾類

BOOLEAN

資料同步任務開發

MaxCompute資料同步任務的配置入口和通用配置流程指導可參見下文的配置指導,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。

建立資料來源

在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源

單表離線同步任務配置指導

單表及整庫即時同步任務配置指導

操作流程請參見DataStudio側即時同步任務配置

整庫離線讀、單表或整庫全增量即時寫等整庫層級同步配置指導

操作流程請參見Data Integration側同步任務配置

附錄:指令碼Demo與參數說明

附錄:離線任務指令碼配置方式

如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的reader參數和writer參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數和Writer參數的指導詳情。

Reader指令碼Demo

{
"type": "job",
"steps": [
{ 
"stepType": "analyticdb_for_mysql", //外掛程式名。
"parameter": {
"column": [ //列名。
"id",
"value",
"table"
],
"connection": [
{
"datasource": "xxx", //資料來源。
"table": [ //表名。
"xxx"
]
}
],
"where": "", //過濾條件。
"splitPk": "", //切分鍵。
"encoding": "UTF-8" //編碼格式。
},
"name": "Reader",
"category": "reader"
},
{ 
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" //同步過程中的錯誤記錄限制數。
},
"speed": {
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
                        "concurrent":1 //作業並發數。
                      "mbps":"12"//限流,此處1mbps = 1MB/s。
}
}
}

Reader指令碼參數

參數

描述

是否必選

預設值

datasource

資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須要與添加的資料來源名稱保持一致。

table

所選取的需要同步的表。

column

所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊,預設使用所有列配置,例如[ * ]。

  • 支援列裁剪,即列可以挑選部分列進行匯出。

  • 支援列換序,即列可以不按照表組織圖資訊的順序進行匯出。

  • 支援常量配置,您需要按照MySQL的文法格式,例如[“id”, “`table`“, “1”, “‘bazhen.csy’”, “null”, “to_char(a + 1)”, “2.3” , “true”]

    • id為普通列名。

    • table包含保留的列名。

    • 1為整型數字常量。

    • bazhen.csy為字串常量。

    • null為空白指標。

    • to_char(a + 1)為計算字串長度函數運算式。

    • 2.3為浮點數。

    • true為布爾值。

  • column必須顯示您指定同步的列集合,不允許為空白 。

splitPk

AnalyticDB for MySQL 3.0 Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區,資料同步因此會啟動並發任務進行資料同步,提高資料同步的效能。

  • 推薦splitPk使用者使用表主鍵,因為表主鍵通常情況下比較均勻,因此切分出來的分區也不容易出現資料熱點。

  • 目前splitPk僅支援整型資料切分,不支援字串、浮點和日期等其他類型 。如果您指定其他非支援類型,忽略splitPk功能,使用單通道進行同步。

  • 如果不填寫splitPk,包括不提供splitPk或者splitPk值為空白,資料同步視作使用單通道同步該表資料 。

where

篩選條件,在實際業務情境中,往往會選擇當天的資料進行同步,將where條件指定為gmt_create>$bizdate

  • where條件可以有效地進行業務增量同步處理。如果不填寫where語句,包括不提供where的key或value,資料同步均視作同步全量資料。

  • 不可以將where條件指定為limit 10,這不符合MySQL SQL WHERE子句約束。

Writer指令碼Demo

{
"type": "job",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "analyticdb_for_mysql", //外掛程式名。
"parameter": {
"postSql": [], //匯入後的準備語句。
"tableType": null, //保留欄位,預設空。
"datasource": "hangzhou_ads", //資料來源名稱。
"column": [ //同步欄位。
"id",
"value"
],
"guid": null,
"writeMode": "insert", //寫入模式,請參見writeMode參數說明。
"batchSize": 2048, //批量寫入的大小,請參見batchSize參數說明。
"encoding": "UTF-8", //編碼格式。
"table": "t5", //寫入的表名。
"preSql": [] //匯入前的準備語句。
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0", //設定檔格式的版本號碼。
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" //錯誤記錄數。
},
"speed": {
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
                        "concurrent":2, //作業並發數。
                        "mbps":"12"//限流,此處1mbps = 1MB/s。
}
}
}

Writer指令碼參數

參數

描述

是否必選

預設值

datasource

資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須與添加的資料來源名稱保持一致。

table

選取的需要同步的表名稱。

writeMode

寫入資料的方式,可選擇insertreplaceupdate三種方式。

  • insert:當沒有遇到主鍵/唯一性索引衝突時,資料會正常寫入。當存在主鍵/唯一性索引衝突時,會自動忽略當前寫入的資料,不做更新。

  • replace:當沒有遇到主鍵/唯一性索引衝突時,資料會正常寫入。當存在主鍵/唯一性索引衝突時,會先刪除衝突資料所在的行,再插入新行,即新行會替換原有行的所有欄位。

  • update:當沒有遇到主鍵/唯一性索引衝突時,資料會正常寫入。當存在主鍵/唯一性索引衝突時,會使用新行替換原有行的所有欄位。

    說明

    僅指令碼模式支援使用該方式。

insert

column

目標表需要寫入資料的欄位,欄位之間用英文所逗號分隔,例如"column": ["id", "name", "age"]。如果要依次寫入全部列,使用*表示, 例如"column": ["*"]

說明

如果欄位名中包含select,請在欄位名前後加上反引號。例如,item_select_no需要寫為`item_select_no`

preSql

執行資料同步任務之前率先執行的SQL語句。目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如清除舊資料。

說明

當有多條SQL語句時,不支援事務。

postSql

執行資料同步任務之後執行的SQL語句,目前嚮導模式僅允許執行一條SQL語句,指令碼模式可以支援多條SQL語句,例如加上某一個時間戳記。

說明

當有多條SQL語句時,不支援事務。

batchSize

一次性批量提交的記錄數大小,該值可以極大減少資料同步系統與MySQL的網路互動次數,並提升整體輸送量。如果該值設定過大,會導致資料同步運行進程OOM異常。

1,024