摘要: 本文为您介绍如何利用DataWorks数据集成将JSON数据从OSS迁移到MaxCompute,并使用MaxCompute内置字符串函数GET_JSON_OBJECT提取JSON信息。html
本文为您介绍如何利用DataWorks数据集成将JSON数据从OSS迁移到MaxCompute,并使用MaxCompute内置字符串函数GET_JSON_OBJECT提取JSON信息。app
将您的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数据集成控制台,新增OSS类型数据源。
spa
具体参数以下所示,测试数据源连通性经过便可点击完成。Endpoint地址请参见OSS各区域的外网、内网地址,本例中为http://oss-cn-shanghai.aliyuncs.com或 http://oss-cn-shanghai-internal.aliyuncs.com(因为本文中OSS和DataWorks项目处于同一个region中,本文选用后者,经过内网链接)。
3d
"fileFormat":"binary"
。该步骤能够保证OSS中的JSON文件同步到MaxCompute以后存在同一行数据中,即为一个字段。其余参数保持不变,脚本模式代码示例以下。 { "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 } } }完成上述配置后,点击运行接便可。运行成功日志示例以下所示。
在您的业务流程中新建一个ODPS SQL节点。 日志
您能够首先输入 SELECT*from mqdata;
语句,查看当前mqdata表中数据。固然这一步及后续步骤,您也能够直接在MaxCompute客户端中输入命令运行。 code
确认导入表中的数据结果无误后,您能够使用MaxCompute内建字符串函数GET_JSON_OBJECT获取您想要的JSON数据。本例中使用 SELECT GET_JSON_OBJECT(mqdata.MQdata,'$.expensive') FROM mqdata;
获取JSON文件中的 expensive值。以下图所示,能够看到已成功获取数据。 orm
原文连接htm