本文為您介紹如何通過DataWorks數據集成,將JSON數據從OSS遷移至MaxCompute,并使用MaxCompute內置字符串函數GET_JSON_OBJECT提取JSON信息。
前提條件
新增MaxCompute數據源。詳情請參見創建MaxCompute數據源。
在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
新增OSS數據源。詳情請參見配置OSS數據源。
在DataWorks上新建數據表,用于存儲遷移的JSON數據。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據開發。
在數據開發頁面,鼠標懸停至圖標,單擊新建表 > 表。
在新建表對話框中,選擇相應的業務流程路徑,輸入名稱,單擊新建。
說明如果數據開發中綁定了多個數據源,則需選擇要遷移數據的目標MaxCompute數據源。
在表的編輯頁面,單擊DDL模式。
在DDL模式對話框,輸入如下建表語句,單擊生成表結構。
CREATE TABLE mqdata (mq_data string);
在確認操作對話框中,單擊確認。
生成表結構后,在基本屬性模塊輸入表的中文名,并分別單擊提交到開發環境和提交到生產環境。
說明如果您使用的是簡單模式的工作空間,僅單擊提交到生產環境即可。
新建離線同步節點。
進入數據開發頁面,右鍵單擊指定業務流程,選擇 。
在新建節點對話框中,輸入節點名稱,并單擊確認。
在頂部菜單欄上,單擊圖標。
在腳本模式下,單擊頂部菜單欄上的圖標。
在導入模板對話框中選擇來源類型、數據源、目標類型及數據源,并單擊確定。
修改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_source",// MaxCompute數據源名稱 "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節點。
右鍵單擊業務流程,選擇 。
在新建函數對話框中,輸入函數名稱,單擊提交。
在ODPS SQL節點編輯頁面輸入如下語句。
--查詢表mqdata數據。 SELECT * from mqdata; --獲取JSON文件中的EXPENSIVE值。 SELECT GET_JSON_OBJECT(mqdata.MQdata,'$.expensive') FROM mqdata;
單擊圖標運行代碼。
您可以在運行日志查看運行結果。