本文为您介绍如何通过DataWorks数据集成,将JSON数据从OSS迁移至MaxCompute,并使用MaxCompute内置字符串函数GET_JSON_OBJECT提取JSON信息。
前提条件
在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_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 } } }
结果验证
新建ODPS SQL节点。
右键单击业务流程,选择 。
在新建函数对话框中,输入函数名称,单击新建。
在ODPS SQL节点编辑页面输入如下语句。
--查询表mq_data数据。 SELECT * from mqdata; --获取JSON文件中的EXPENSIVE值。 SELECT GET_JSON_OBJECT(mqdata.MQdata,'$.expensive') FROM mqdata;
单击图标运行代码。
您可以在运行日志查看运行结果。