DataWorks(大數據開發治理平臺)是阿里云重要的PaaS(Platform-as-a-Service)平臺產品,支持多種計算和存儲引擎服務。本文介紹通過DataWorks將MongoDB的離線數據遷移至Lindorm寬表。
背景信息
有關大數據開發治理平臺DataWorks,具體請參見什么是DataWorks。
注意事項
將MongoDB的離線數據遷移至Lindorm寬表時,需要將MongoDB嵌套的JSON數據展開成水平結構,并且不涉及數據的變換。
如果遷移過程中需要對某些數據進行處理,例如對MongoDB數據中主鍵進行MD5散列,需要按照如下步驟操作:
通過DataWorks將MongoDB數據遷移至MaxCompute(ODPS)。
在MaxCompute(ODPS)上執行SQL處理數據。
通過DataWorks將MaxCompute數據遷移至Lindorm寬表。
準備工作
將MongoDB的離線數據遷移至Lindorm寬表需要完成以下準備工作。
MongoDB的數據準備如下:
{ "id" : ObjectId("624573dd7c0e2eea4cc8****"), "title" : "MongoDB教程", "description" : "MongoDB是一個NoSQL數據庫", "by" : "菜鳥教程", "url" : "http://www.runoob.com", "map" : { "a" : "mapa", "b" : "mapb" }, "likes" : 100 }
Lindorm寬表的Schema數據準備如下:
CREATE TABLE t1(title varchar, desc varchar, by1 varchar, url varchar, a varchar, b varchar, likes int, primary key(title));
使用大數據開發治理平臺DataWorks的數據集成服務配置DataX任務,具體操作請參見使用DataWorks配置DataX。
操作步驟
在DataWorks控制臺配置MongoDB數據源,具體操作請參見配置MongoDB數據源。
通過腳本模式配置離線數據同步任務,具體請參見通過腳本模式配置離線同步任務。
創建業務流程。
登錄DataWorks控制臺。
在左側導航欄,單擊工作空間。
選擇工作空間所在地域,單擊目標工作空間操作列的
。在數據開發頁面,鼠標懸停至圖標,單擊新建業務流程。
在新建業務流程對話框中,輸入業務名稱和描述。
說明業務名稱是由大小寫字母、中文、數字、下劃線(_)以及小數點(.)中的一種或多種組成,且不能超過128個字符。
單擊新建。
創建離線同步節點。
展開業務流程,右鍵單擊數據集成。
單擊
。在新建節點對話框中,輸入節點名稱。
說明節點名稱是由大小寫字母、中文、數字、下劃線(_)以及小數點(.)中的一種或多種組成,且不能超過128個字符。
單擊提交。
配置離線同步任務的讀寫端。
成功創建離線同步節點后,單擊工具欄中的轉換腳本圖標。
在彈出的對話框中,單擊確認,進入腳本模式進行開發。
腳本模式中已生成了基本的讀取端配置,此時您可以繼續手動配置離線同步任務的讀取和寫入端數據源,以及需要同步的表信息等。示例如下:
說明MongoDB Reader的配置參數說明具體請參見MongoDB Reader。
Lindorm Writer的配置參數說明具體請參見Lindorm Writer。
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "mongodb", "parameter": { "datasource": "test_mongo", //MongoDB數據源名稱。 "column": [ { "name": "title", "type": "string" }, { "name": "description", "type": "string" }, { "name": "by", "type": "string" }, { "name": "url", "type": "string" }, { "name": "map.a", "type": "document.string" }, { "name": "map.b", "type": "document.string" }, { "name": "likes", "type": "int" } ], "collectionName": "testdatax" }, "name": "Reader", "category": "reader" }, { "stepType": "lindorm", "parameter": { "configuration": { "lindorm.client.seedserver": "ld-xxxx-proxy-lindorm.lindorm.rds.aliyuncs.com:30020", "lindorm.client.username": "root", "lindorm.client.namespace": "test", "lindorm.client.password": "root" }, "nullMode": "skip", "datasource": "", "writeMode": "api", "envType": 1, "columns": [ "title", "desc", "by", "url", "a", "b", "likes" ], "dynamicColumn": "false", "table": "t1", "encoding": "utf8" }, "name": "Writer", "category": "writer" } ], "setting": { "executeMode": null, "errorLimit": { "record": "" }, "speed": { "concurrent": 2, "throttle": false } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
完成離線同步節點的配置后,請保存并單擊腳本模式左上角的圖標,在運行日志頁簽中顯示數據遷移過程。