全部產品
Search
文件中心

MaxCompute:JSON資料從OSS遷移至MaxCompute

更新時間:Jun 19, 2024

本文為您介紹如何通過DataWorksData Integration,將JSON資料從OSS遷移至MaxCompute,並使用MaxCompute內建字串函數GET_JSON_OBJECT提取JSON資訊。

前提條件

  • 開通MaxCompute和DataWorks

  • 在DataWorks上完成建立商務程序,本例使用DataWorks簡單模式。詳情請參見建立商務程序

  • 將JSON檔案重新命名為尾碼為.txt的檔案,並上傳至OSS。本文中OSS Bucket地區為華東2(上海)。樣本檔案如下。

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

將JSON資料從OSS遷移至MaxCompute

  1. 新增OSS資料來源。詳情請參見配置OSS資料來源

  2. 在DataWorks上建立資料表,用於儲存遷移的JSON資料。

    1. 登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料建模與開發 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

    2. 資料開發頁面,滑鼠移至上方至image..png表徵圖,單擊建立表 >

    3. 建立表對話方塊中,選擇相應的路徑,輸入名稱,單擊建立

      說明

      如果綁定多個執行個體,則需要選擇MaxCompute引擎執行個體。

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

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

      create table mqdata (mq_data string);
    6. 確認操作對話方塊中,單擊確認

    7. 產生表結構後,在基本屬性模組輸入表的中文名,並分別單擊提交到開發環境提交到生產環境

      說明

      如果您使用的是簡單模式的工作空間,僅單擊提交到生產環境即可。

  3. 建立離線同步節點。

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

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

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

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

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

    6. 修改JSON代碼後,單擊運行按鈕。

      範例程式碼如下。

      {
          "type": "job",
          "steps": [
              {
                  "stepType": "oss",
                  "parameter": {
                      "fieldDelimiterOrigin": "^",
                      "nullFormat": "",
                      "compress": "",
                      "datasource": "OSS_userlog",
                      "column": [
                          {
                              "name": 0,
                              "type": "string",
                              "index": 0
                          }
                      ],
                      "skipHeader": "false",
                      "encoding": "UTF-8",
                      "fieldDelimiter": "^",
                      "fileFormat": "binary",
                      "object": [
                          "applog.txt"
                      ]
                  },
                  "name": "Reader",
                  "category": "reader"
              },
              {
                  "stepType": "odps",
                  "parameter": {
                      "partition": "",
                      "isCompress": false,
                      "truncate": true,
                      "datasource": "odps_first",
                      "column": [
                          "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
              }
          }
      }

結果驗證

建立ODPS SQL節點。

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

  2. 建立函數對話方塊中,輸入函數名稱,單擊建立

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

    --查詢表mq_data資料。
    SELECT * from mqdata;
    --擷取JSON檔案中的EXPENSIVE值。
    SELECT GET_JSON_OBJECT(mqdata.MQdata,'$.expensive') FROM mqdata;
  4. 單擊**表徵圖運行代碼。

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