資料及賬号準備
首先您需要将資料上傳至您的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用戶端中輸入指令運作。