1051
財經資訊
DRDSReader__Reader插件_使用手冊_數據集成-阿裏雲
1 快速介紹
DrdsReader插件實現了從DRDS(分布式RDS)讀取數據。在底層實現上,DrdsReader通過JDBC連接遠程DRDS數據庫,並執行相應的sql語句將數據從DRDS庫中SELECT出來。
DRDS的插件目前CDP隻適配了Mysql引擎的場景,DRDS對於CDP而言,就是一套分布式Mysql數據庫,並且大部分通信協議遵守Mysql使用場景。
2 實現原理
簡而言之,DrdsReader通過JDBC連接器連接到遠程的DRDS數據庫,並根據用戶配置的信息生成查詢SELECT SQL語句並發送到遠程DRDS數據庫,並將該SQL執行返回結果使用CDP自定義的數據類型拚裝為抽象的數據集,並傳遞給下遊Writer處理。
對於用戶配置Table、Column、Where的信息,DrdsReader將其拚接為SQL語句發送到DRDS數據庫。不同於普通的Mysql數據庫,DRDS作為分布式數據庫係統,無法適配所有Mysql的協議,包括複雜的Join等語句,DRDS暫時無法支持。
3 功能說明
3.1 配置樣例
- 配置一個從Mysql數據庫同步抽取數據到ODPS的作業:
{
"type": "job",
"traceId": "您可以在這裏填寫您作業的追蹤ID,建議使用業務名+您的作業ID",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "drds",
"parameter": {
"jdbcUrl": "jdbc:mysql://drds-ip:3306/database",
"table": "t_instance",
"username": "datasync",
"password": "xxxxxx",
"column": ["*"],
"where": "1 = 1"
}
},
"writer": {
"plugin": "odps",
"parameter": {
"accessId": "bazhen.csy",
"accessKey": "xxxxxxx",
"project": "project",
"table": "table",
"partition": "pt=20150101",
"column": ["*"]
}
}
}
}
3.2 參數說明
jdbcUrl
描述:描述的是到對端數據庫的JDBC連接信息。
jdbcUrl按照Mysql官方規範,並可以填寫連接附件控製信息。具體請參看mysql官方文檔。
必選:是
默認值:無
username
- 描述:數據源的用戶名
- 必選:是
- 默認值:無
password
- 描述:數據源指定用戶名的密碼
- 必選:是
- 默認值:無
table
- 描述:所選取需要抽取的表。
- 必選:是
- 默認值:無
column
描述:所配置的表中需要同步的列名集合,使用JSON的數組描述字段信息。用戶使用代表默認使用所有列配置,例如['']。
支持列裁剪,即列可以挑選部分列進行導出。
支持列換序,即列可以不按照表schema信息進行導出。
支持常量配置,用戶需要按照Mysql SQL語法格式:
["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必須用戶顯示指定同步的列集合,不允許為空!
必選:是
默認值:無
where
描述:篩選條件,DrdsReader根據指定的column、table、where條件拚接SQL,並根據這個SQL進行數據抽取。例如在做測試時,可以將where條件指定為limit 10;在實際業務場景中,往往會選擇當天的數據進行同步,可以將where條件指定為gmt_create > $bizdate;
where條件可以有效地進行業務增量同步。where條件不配置或者為空,視作全表同步數據。
必選:否
默認值:無
querySql
描述:在有些業務場景下,where這一配置項不足以描述所篩選的條件,用戶可以通過該配置型來自定義篩選SQL。當用戶配置了這一項之後,CDP係統就會忽略tables,columns這些配置型,直接使用這個配置項的內容對數據進行篩選,例如需要進行多表join後同步數據,使用select a,b from table_a join table_b on table_a.id = table_b.id ;
當用戶配置querySql時,MysqlReader直接忽略table、column、where條件的配置,querySql優先級大於table、column、where選項。
必選:否
默認值:無
3.3 類型轉換
目前DrdsReader支持大部分Mysql類型,但也存在部分個別類型沒有支持的情況,請注意檢查你的類型。
下麵列出DrdsReader針對Mysql類型轉換列表:
CDP 內部類型 | Mysql 數據類型 |
---|---|
Long | int, tinyint, smallint, mediumint, int, bigint |
Double | float, double, decimal |
String | varchar, char, tinytext, text, mediumtext, longtext |
Date | date, datetime, timestamp, time, year |
Boolean | bit, bool |
Bytes | tinyblob, mediumblob, blob, longblob, varbinary |
請注意:
- 除上述羅列字段類型外,其他類型均不支持。
4 約束限製
4.1 一致性視圖問題
DRDS本身屬於分布式數據庫,對外無法提供一致性的多庫多表視圖,不同於Mysql等單庫單表同步,DRDSReader無法抽取同一個時間切片的分庫分表快照信息,也就是說CDP DrdsReader抽取底層不同的分表將獲取不同的分表快照,無法保證強一致性。
4.2 數據庫編碼問題
DRDS本身的編碼設置非常靈活,包括指定編碼到庫、表、字段級別,甚至可以均不同編碼。優先級從高到低為字段、表、庫、實例。我們不推薦數據庫用戶設置如此混亂的編碼,最好在庫級別就統一到UTF-8。
DrdsReader底層使用JDBC進行數據抽取,JDBC天然適配各類編碼,並在底層進行了編碼轉換。因此DrdsReader不需用戶指定編碼,可以自動獲取編碼並轉碼。
對於DRDS底層寫入編碼和其設定的編碼不一致的混亂情況,DrdsReader對此無法識別,對此也無法提供解決方案,對於這類情況,導出有可能為亂碼
。
4.3 增量數據同步
DrdsReader使用JDBC SELECT語句完成數據抽取工作,因此可以使用SELECT...WHERE...進行增量數據抽取,方式有多種:
- 數據庫在線應用寫入數據庫時,填充modify字段為更改時間戳,包括新增、更新、刪除(邏輯刪)。對於這類應用,DrdsReader隻需要WHERE條件跟上一同步階段時間戳即可。
- 對於新增流水型數據,DrdsReader可以WHERE條件後跟上一階段最大自增ID即可。
對於業務上無字段區分新增、修改數據情況,DrdsReader也無法進行增量數據同步,隻能同步全量數據。
4.4 SQL安全性
DrdsReader提供querySql語句交給用戶自己實現SELECT抽取語句,DrdsReader本身對querySql不做任何安全性校驗。這塊交由CDP用戶方自己保證。
5 FAQ
Q: DrdsReader同步報錯,報錯信息為XXX
A: 網絡或者權限問題,請使用DRDS命令行測試:
mysql -u username -p password -h ip -D database -e "select * from "
如果上述命令也報錯,那可以證實是環境問題,請聯係你的DBA。
Q: 我想同步DRDS增量數據,怎麼配置?
A: DrdsReader必須業務支持增量字段CDP才能同步增量,例如在淘寶大部分業務表中,通過gmt_modified字段表征這條記錄的最新修改時間,那麼CDP DrdsReader隻需要配置where條件為
"where": "Date(add_time) = '2014-06-01'"
最後更新:2016-11-23 16:03:59
上一篇:
OTSReader__Reader插件_使用手冊_數據集成-阿裏雲
下一篇:
OSSReader__Reader插件_使用手冊_數據集成-阿裏雲
簡單 Job 示例__SchedulerX for EDAS_二方服務_企業級分布式應用服務 EDAS-阿裏雲
創建數據庫和賬號(SQL Server 2008 R2)__設置實例基礎配置_快速入門(SQL Server)_雲數據庫 RDS 版-阿裏雲
擴展MapReduce__概要_MapReduce_大數據計算服務-阿裏雲
獲取角色列表__賬號管理類 API_Open API 參考_企業級分布式應用服務 EDAS-阿裏雲
SMTP之perl調用示例__SMTP接口說明_郵件推送-阿裏雲
配置RDS數據源__基礎示例—完整數據開發_場景教程_大數據開發套件-阿裏雲
刪除API__API管理相關接口_API_API 網關-阿裏雲
雲服務器 ECS 自動快照隨磁盤釋放
調用服務__使用說明_用戶手冊_雲服務總線 CSB-阿裏雲
設置NotifyURL__直播流操作接口_API 手冊_CDN-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲