javascript
JSON数据从OSS迁移到MaxCompute最佳实践
本文為您介紹如何利用DataWorks數(shù)據(jù)集成將JSON數(shù)據(jù)從OSS遷移到MaxCompute,并使用MaxCompute內置字符串函數(shù)GET_JSON_OBJECT提取JSON信息。
數(shù)據(jù)上傳OSS
將您的JSON文件重命名后綴為TXT文件,并上傳到OSS。本文中使用的JSON文件示例如下。
{"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 }將applog.txt文件上傳到OSS,本文中OSS Bucket位于華東2區(qū)。?
使用DataWorks導入數(shù)據(jù)到MaxCompute
進入DataWorks數(shù)據(jù)集成控制臺,新增OSS類型數(shù)據(jù)源。?
具體參數(shù)如下所示,測試數(shù)據(jù)源連通性通過即可點擊完成。Endpoint地址請參見OSS各區(qū)域的外網(wǎng)、內網(wǎng)地址,本例中為http://oss-cn-shanghai.aliyun...?http://oss-cn-shanghai-internal.aliyuncs.com(由于本文中OSS和DataWorks項目處于同一個region中,本文選用后者,通過內網(wǎng)連接)。?
在DataWorks上新建數(shù)據(jù)同步類型節(jié)點。?
新建的同時,在DataWorks新建一個建表任務,用于存放JSON數(shù)據(jù),本例中新建表名為mqdata。?
表參數(shù)可以通過圖形化界面完成。本例中mqdata表僅有一列,類型為string,列名為MQ data。?
完成上述新建后,您可以在圖形化界面配置數(shù)據(jù)同步任務參數(shù),如下圖所示。選擇目標數(shù)據(jù)源名稱為odps_first,選擇目標表為剛建立的mqdata。數(shù)據(jù)來源類型為OSS,Object前綴可填寫文件路徑及名稱。列分隔符使用TXT文件中不存在的字符即可,本文中使用?^(對于OSS中的TXT格式數(shù)據(jù)源,Dataworks支持多字符分隔符,所以您可以使用例如?%&%#^$$^%這樣很難出現(xiàn)的字符作為列分隔符,保證分割為一列)。?
映射方式選擇默認的同行映射即可。?
點擊左上方的切換腳本按鈕,切換為腳本模式。修改fileFormat參數(shù)為:?"fileFormat":"binary"。該步驟可以保證OSS中的JSON文件同步到MaxCompute之后存在同一行數(shù)據(jù)中,即為一個字段。其他參數(shù)保持不變,腳本模式代碼示例如下。
{"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,"dmu": 1}} }完成上述配置后,點擊運行接即可。運行成功日志示例如下所示。?
獲取JSON字段信息
在您的業(yè)務流程中新建一個ODPS SQL節(jié)點。
?
您可以首先輸入?SELECT*from mqdata;語句,查看當前mqdata表中數(shù)據(jù)。當然這一步及后續(xù)步驟,您也可以直接在MaxCompute客戶端中輸入命令運行。?
確認導入表中的數(shù)據(jù)結果無誤后,您可以使用MaxCompute內建字符串函數(shù)GET_JSON_OBJECT獲取您想要的JSON數(shù)據(jù)。本例中使用?SELECT GET_JSON_OBJECT(mqdata.MQdata,'$.expensive') FROM mqdata;獲取JSON文件中的?expensive值。如下圖所示,可以看到已成功獲取數(shù)據(jù)。?
本文作者:付帥
閱讀原文
本文為云棲社區(qū)原創(chuàng)內容,未經(jīng)允許不得轉載。
總結
以上是生活随笔為你收集整理的JSON数据从OSS迁移到MaxCompute最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 竞价推广账户创意撰写的技巧之核心思路
- 下一篇: Influxdb修改数据保留策略