1. 程式人生 > >JSON數據從MongoDB遷移到MaxCompute最佳實踐

JSON數據從MongoDB遷移到MaxCompute最佳實踐

語句 RoCE 雲數據 添加 pri ESS truncate sele steps

摘要: 本文為您介紹如何利用DataWorks數據集成直接從MongoDB提取JSON字段到MaxCompute。

數據及賬號準備
首先您需要將數據上傳至您的MongoDB數據庫。本例中使用阿裏雲的雲數據庫 MongoDB 版,網絡類型為VPC(需申請公網地址,否則無法與DataWorks默認資源組互通),測試數據如下。

{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",

"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
登錄MongoDB的DMS控制臺,本例中使用的數據庫為 admin,集合為 userlog,您可以在查詢窗口使用db.userlog.find().limit(10)命令查看已上傳好的數據,如下圖所示。
技術分享圖片
此外,需提前在數據庫內新建用戶,用於DataWorks添加數據源。本例中使用命令db.createUser({user:"bookuser",pwd:"123456",roles:["root"]}),新建用戶名為 bookuser,密碼為 123456,權限為root。
使用DataWorks提取數據到MaxCompute
新增MongoDB數據源
進入DataWorks數據集成控制臺,新增MongoDB類型數據源。
技術分享圖片
具體參數如下所示,測試數據源連通性通過即可點擊完成。由於本文中MongoDB處於VPC環境下,因此 數據源類型需選擇 有公網IP。
技術分享圖片
訪問地址及端口號可通過在MongoDB管理控制臺點擊實例名稱獲取,如下圖所示。
技術分享圖片
新建數據同步任務
在DataWorks上新建數據同步類型節點。
技術分享圖片
新建的同時,在DataWorks新建一個建表任務,用於存放JSON數據,本例中新建表名為mqdata。
技術分享圖片
表參數可以通過圖形化界面完成。本例中mqdata表僅有一列,類型為string,列名為MQ data。
技術分享圖片
完成上述新建後,您可以在圖形化界面進行數據同步任務參數的初步配置,如下圖所示。選擇目標數據源名稱為odps_first,選擇目標表為剛建立的mqdata。數據來源類型為MongoDB,選擇我們剛創建的數據源mongodb_userlog。完成上述配置後, 點擊轉換為腳本,跳轉到腳本模式。
技術分享圖片
腳本模式代碼示例如下。

{
"type": "job",
"steps": [
{
"stepType": "mongodb",
"parameter": {
"datasource": "mongodb_userlog",
//數據源名稱
"column": [
{
"name": "store.bicycle.color", //JSON字段路徑,本例中提取color值
"type": "document.document.string" //本欄目的字段數需和name一致。假如您選取的JSON字段為一級字段,如本例中的expensive,則直接填寫string即可。
}
],
"collectionName //集合名稱": "userlog"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "odps",
"parameter": {
"partition": "",
"isCompress": false,
"truncate": true,
"datasource": "odps_first",
"column": [
//MaxCompute表列名 "mqdata"
],
"emptyAsNull": false,
"table": "mqdata"
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"concurrent": 2,
"throttle": false,
"dmu": 1
}
}
}
完成上述配置後,點擊運行接即可。運行成功日誌示例如下所示。
技術分享圖片
結果驗證
在您的業務流程中新建一個ODPS SQL節點。
技術分享圖片
您可以輸入 SELECT * from mqdata;語句,查看當前mqdata表中數據。當然這一步您也可以直接在MaxCompute客戶端中輸入命令運行。
技術分享圖片

JSON數據從MongoDB遷移到MaxCompute最佳實踐