天天看點

JSON資料從MongoDB遷移到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)指令檢視已上傳好的資料,如下圖所示。 

JSON資料從MongoDB遷移到MaxCompute最佳實踐

此外,需提前在資料庫内建立使用者,用于DataWorks添加資料源。本例中使用指令

db.createUser({user:"bookuser",pwd:"123456",roles:["root"]})

,建立使用者名為 bookuser,密碼為 123456,權限為root。

使用DataWorks提取資料到MaxCompute

  1. 新增MongoDB資料源

    進入DataWorks

    資料內建 控制台,新增 MongoDB類型 資料源。 
    JSON資料從MongoDB遷移到MaxCompute最佳實踐
    具體參數如下所示,測試資料源連通性通過即可點選完成。由于本文中MongoDB處于VPC環境下,是以 資料源類型需選擇 有公網IP。 
    JSON資料從MongoDB遷移到MaxCompute最佳實踐
    通路位址及端口号可通過在 MongoDB管理控制台 點選執行個體名稱擷取,如下圖所示。 
    JSON資料從MongoDB遷移到MaxCompute最佳實踐
  2. 建立資料同步任務

    在DataWorks上建立

    資料同步類型節點。
    JSON資料從MongoDB遷移到MaxCompute最佳實踐
    建立的同時,在DataWorks建立一個 建表任務 ,用于存放JSON資料,本例中建立表名為mqdata。 
    JSON資料從MongoDB遷移到MaxCompute最佳實踐
    表參數可以通過圖形化界面完成。本例中mqdata表僅有一列,類型為string,列名為MQ data。 
    JSON資料從MongoDB遷移到MaxCompute最佳實踐
    完成上述建立後,您可以在圖形化界面進行資料同步任務參數的初步配置,如下圖所示。選擇目标資料源名稱為odps_first,選擇目标表為剛建立的mqdata。資料來源類型為MongoDB,選擇我們剛建立的資料源mongodb_userlog。完成上述配置後, 點選轉換為腳本,跳轉到腳本模式。 
    JSON資料從MongoDB遷移到MaxCompute最佳實踐
    腳本模式代碼示例如下。
    {
        "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
            }
        }
    }           
    完成上述配置後,點選運作接即可。運作成功日志示例如下所示。 
    JSON資料從MongoDB遷移到MaxCompute最佳實踐

結果驗證

在您的

業務流程

中建立一個ODPS SQL節點。 

JSON資料從MongoDB遷移到MaxCompute最佳實踐

您可以輸入 

SELECT * from mqdata;

語句,檢視目前mqdata表中資料。當然這一步您也可以直接在

MaxCompute用戶端

中輸入指令運作。 

JSON資料從MongoDB遷移到MaxCompute最佳實踐