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

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

數據及帳號準備

首先您須要將數據上傳至您的MongoDB數據庫。本例中使用阿里雲的雲數據庫 MongoDB 版,網絡類型爲VPC(需申請公網地址,不然沒法與DataWorks默認資源組互通),測試數據以下。mongodb

{
    "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

  1. 新增MongoDB數據源

    進入DataWorks數據集成控制檯,新增MongoDB類型數據源。 
    測試

    具體參數以下所示,測試數據源連通性經過便可點擊完成。因爲本文中MongoDB處於VPC環境下,所以 數據源類型需選擇 有公網IP。 

    訪問地址及端口號可經過在MongoDB管理控制檯點擊實例名稱獲取,以下圖所示。 
    阿里雲

  2. 新建數據同步任務在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客戶端中輸入命令運行。 
 spa

原文連接3d

相關文章
相關標籤/搜索