在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
}
新增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;
单击图标运行代码
您可以在运行日志查看运行结果。费用不低,我的项目是对外提供数据检索服务,这个消耗速度扛不住啊。