DataWorks(大数据开发治理平台)是阿里云重要的PaaS(Platform-as-a-Service)平台产品,支持多种计算和存储引擎服务。本文介绍通过DataWorks将MongoDB的离线数据迁移至Lindorm宽表。
背景信息
有关大数据开发治理平台DataWorks,具体请参见什么是DataWorks。
注意事项
将MongoDB的离线数据迁移至Lindorm宽表时,需要将MongoDB嵌套的JSON数据展开成水平结构,并且不涉及数据的变换。
如果迁移过程中需要对某些数据进行处理,例如对MongoDB数据中主键进行MD5散列,需要按照如下步骤操作:
通过DataWorks将MongoDB数据迁移至MaxCompute(ODPS)。
在MaxCompute(ODPS)上执行SQL处理数据。
通过DataWorks将MaxCompute数据迁移至Lindorm宽表。
准备工作
将MongoDB的离线数据迁移至Lindorm宽表需要完成以下准备工作。
MongoDB的数据准备如下:
{ "id" : ObjectId("624573dd7c0e2eea4cc8****"), "title" : "MongoDB教程", "description" : "MongoDB是一个NoSQL数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "map" : { "a" : "mapa", "b" : "mapb" }, "likes" : 100 }
Lindorm宽表的Schema数据准备如下:
CREATE TABLE t1(title varchar, desc varchar, by1 varchar, url varchar, a varchar, b varchar, likes int, primary key(title));
使用大数据开发治理平台DataWorks的数据集成服务配置DataX任务,具体操作请参见使用DataWorks配置DataX。
操作步骤
在DataWorks控制台配置MongoDB数据源,具体操作请参见配置MongoDB数据源。
通过脚本模式配置离线数据同步任务,具体请参见通过脚本模式配置离线同步任务。
创建业务流程。
登录DataWorks控制台。
在左侧导航栏,单击工作空间。
选择工作空间所在地域,单击目标工作空间操作列的
。在数据开发页面,鼠标悬停至图标,单击新建业务流程。
在新建业务流程对话框中,输入业务名称和描述。
说明业务名称是由大小写字母、中文、数字、下划线(_)以及小数点(.)中的一种或多种组成,且不能超过128个字符。
单击新建。
创建离线同步节点。
展开业务流程,右键单击数据集成。
单击
。在新建节点对话框中,输入节点名称。
说明节点名称是由大小写字母、中文、数字、下划线(_)以及小数点(.)中的一种或多种组成,且不能超过128个字符。
单击提交。
配置离线同步任务的读写端。
成功创建离线同步节点后,单击工具栏中的转换脚本图标。
在弹出的对话框中,单击确认,进入脚本模式进行开发。
脚本模式中已生成了基本的读取端配置,此时您可以继续手动配置离线同步任务的读取和写入端数据源,以及需要同步的表信息等。示例如下:
说明MongoDB Reader的配置参数说明具体请参见MongoDB Reader。
Lindorm Writer的配置参数说明具体请参见Lindorm Writer。
{ "type": "job", "version": "2.0", "steps": [ { "stepType": "mongodb", "parameter": { "datasource": "test_mongo", //MongoDB数据源名称。 "column": [ { "name": "title", "type": "string" }, { "name": "description", "type": "string" }, { "name": "by", "type": "string" }, { "name": "url", "type": "string" }, { "name": "map.a", "type": "document.string" }, { "name": "map.b", "type": "document.string" }, { "name": "likes", "type": "int" } ], "collectionName": "testdatax" }, "name": "Reader", "category": "reader" }, { "stepType": "lindorm", "parameter": { "configuration": { "lindorm.client.seedserver": "ld-xxxx-proxy-lindorm.lindorm.rds.aliyuncs.com:30020", "lindorm.client.username": "root", "lindorm.client.namespace": "test", "lindorm.client.password": "root" }, "nullMode": "skip", "datasource": "", "writeMode": "api", "envType": 1, "columns": [ "title", "desc", "by", "url", "a", "b", "likes" ], "dynamicColumn": "false", "table": "t1", "encoding": "utf8" }, "name": "Writer", "category": "writer" } ], "setting": { "executeMode": null, "errorLimit": { "record": "" }, "speed": { "concurrent": 2, "throttle": false } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
完成离线同步节点的配置后,请保存并单击脚本模式左上角的图标,在运行日志页签中显示数据迁移过程。