前提条件
-
开通MaxCompute。
-
在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数据。
-
修改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节点。
-
右键单击业务流程,选择新建节点 > MaxCompute > ODPS SQL。
-
在新建函数对话框中,输入函数名称,单击新建。
-
在ODPS SQL节点编辑页面输入如下语句。
--查询表mq_data数据。 SELECT * from mqdata; --获取JSON文件中的EXPENSIVE值。 SELECT GET_JSON_OBJECT(mqdata.MQdata,'$.expensive') FROM mqdata;
-
单击图标运行代码
-
您可以在运行日志查看运行结果。费用不低,我的项目是对外提供数据检索服务,这个消耗速度扛不住啊。