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