全部產品
Search
文件中心

MaxCompute:JSON資料從MongoDB遷移至MaxCompute

更新時間:Jun 19, 2024

本文為您介紹如何通過DataWorks的Data Integration功能,將從MongoDB提取的JSON欄位遷移至MaxCompute。

前提條件

在MongoDB上準備測試資料

  1. 帳號準備。

    在資料庫內建立使用者,用於DataWorks添加資料來源。本樣本執行如下命令。

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

    建立使用者名稱為bookuser,密碼為123456,角色為任意擁有訪問資料許可權的角色。

  2. 資料準備。

    將資料上傳至MongoDB資料庫。本樣本使用阿里雲的ApsaraDB for 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
                }
  3. 在MongoDB的DMS控制台,本樣本使用的資料庫為admin,集合為userlog。執行如下命令,查看已上傳的資料。

    db.userlog.find().limit(10)

通過DataWorks將JSON資料從MongoDB遷移至MaxCompute

  1. 登入DataWorks控制台

  2. 在DataWorks上建立目標表。用以接收從MongoDB遷移的資料。

    1. 按右鍵已建立的商務程序,選擇建立表 > MaxCompute >

    2. 建立表頁面,選擇引擎類型並輸入表名

    3. 在表的編輯頁面,單擊DDL

    4. DDL模式對話方塊,輸入建表語句,單擊產生表結構

      重要

      建表語句中的表名稱請與在建立表輸入的表名一致。

      create table mqdata (mqdata string);
    5. 單擊提交到生產環境

  3. 新增MongoDB資料來源,詳情請參見配置MongoDB資料來源

  4. 建立離線同步節點。

    1. 進入資料開發頁面,按右鍵指定商務程序,選擇建立節點 > Data Integration > 離線同步

    2. 建立節點對話方塊中,輸入節點名稱,並單擊確認

    3. 在頂部功能表列上,單擊轉化指令碼表徵圖。

    4. 在指令碼模式下,單擊頂部功能表列上的**表徵圖。

    5. 匯入模板對話方塊中選擇來源類型資料來源目標類型資料來源,並單擊確定

    6. 輸入如下指令碼。

      {
          "type": "job",
          "steps": [
          {
              "stepType": "mongodb",
              "parameter": {
                  "datasource": "mongodb_userlog",//資料來源名稱。
                  "column": [
                      {
                      "name": "store.bicycle.color", //JSON欄位路徑,本例中提取color值。
                      "type": "document.String" //非一層子屬性以最終擷取的類型為準。假如您選取的JSON欄位為一級欄位,例如本例中的expensive,則直接填寫string即可。
                      }
                    ],
                  "collectionName": "userlog"   //集合名稱。
                  },
              "name": "Reader",
              "category": "reader"
              },
              {
                  "stepType": "odps",
                  "parameter": {
                  "partition": "",
                  "isCompress": false,
                  "truncate": true,
                  "datasource": "odps_first",
                  "column": [
                  "mqdata"  //MaxCompute表列名。
                  ],
                  "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,
                  }
                  }
              }
    7. 單擊**表徵圖運行代碼。

    8. 您可以在作業記錄查看運行結果。

驗證結果

  1. 按右鍵商務程序,選擇建立節點 > MaxCompute > ODPS SQL

  2. 建立節點對話方塊中輸入節點名稱,並單擊確認

  3. 在ODPS SQL節點編輯頁面輸入如下語句。

    SELECT * from mqdata;
  4. 單擊**表徵圖運行代碼。

  5. 您可以在作業記錄查看運行結果。