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