JSON数据从MongoDB迁移到MaxCompute最佳实践

news/2024/7/10 5:54:36 标签: 数据库, json

摘要: 本文为您介绍如何利用DataWorks数据集成直接从MongoDB提取JSON字段到MaxCompute。

数据及账号准备
首先您需要将数据上传至您的MongoDB数据库。本例中使用阿里云的云数据库 MongoDB 版,网络类型为VPC(需申请公网地址,否则无法与DataWorks默认资源组互通),测试数据如下。

{
"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
}
登录MongoDB的DMS控制台,本例中使用的数据库为 admin,集合为 userlog,您可以在查询窗口使用db.userlog.find().limit(10)命令查看已上传好的数据,如下图所示。
JSON数据从MongoDB迁移到MaxCompute最佳实践
此外,需提前在数据库内新建用户,用于DataWorks添加数据源。本例中使用命令db.createUser({user:"bookuser",pwd:"123456",roles:["root"]}),新建用户名为 bookuser,密码为 123456,权限为root。
使用DataWorks提取数据到MaxCompute
新增MongoDB数据源
进入DataWorks数据集成控制台,新增MongoDB类型数据源。
JSON数据从MongoDB迁移到MaxCompute最佳实践
具体参数如下所示,测试数据源连通性通过即可点击完成。由于本文中MongoDB处于VPC环境下,因此 数据源类型需选择 有公网IP。
JSON数据从MongoDB迁移到MaxCompute最佳实践
访问地址及端口号可通过在MongoDB管理控制台点击实例名称获取,如下图所示。
JSON数据从MongoDB迁移到MaxCompute最佳实践
新建数据同步任务
在DataWorks上新建数据同步类型节点。
JSON数据从MongoDB迁移到MaxCompute最佳实践
新建的同时,在DataWorks新建一个建表任务,用于存放JSON数据,本例中新建表名为mqdata。
JSON数据从MongoDB迁移到MaxCompute最佳实践
表参数可以通过图形化界面完成。本例中mqdata表仅有一列,类型为string,列名为MQ data。
JSON数据从MongoDB迁移到MaxCompute最佳实践
完成上述新建后,您可以在图形化界面进行数据同步任务参数的初步配置,如下图所示。选择目标数据源名称为odps_first,选择目标表为刚建立的mqdata。数据来源类型为MongoDB,选择我们刚创建的数据源mongodb_userlog。完成上述配置后, 点击转换为脚本,跳转到脚本模式。
JSON数据从MongoDB迁移到MaxCompute最佳实践
脚本模式代码示例如下。

{
"type": "job",
"steps": [
{
"stepType": "mongodb",
"parameter": {
"datasource": "mongodb_userlog",
//数据源名称
"column": [
{
"name": "store.bicycle.color", //JSON字段路径,本例中提取color值
"type": "document.document.string" //本栏目的字段数需和name一致。假如您选取的JSON字段为一级字段,如本例中的expensive,则直接填写string即可。
}
],
"collectionName //集合名称": "userlog"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "odps",
"parameter": {
"partition": "",
"isCompress": false,
"truncate": true,
"datasource": "odps_first",
"column": [
//MaxCompute表列名 "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
}
}
}
完成上述配置后,点击运行接即可。运行成功日志示例如下所示。
JSON数据从MongoDB迁移到MaxCompute最佳实践
结果验证
在您的业务流程中新建一个ODPS SQL节点。
JSON数据从MongoDB迁移到MaxCompute最佳实践
您可以输入 SELECT * from mqdata;语句,查看当前mqdata表中数据。当然这一步您也可以直接在MaxCompute客户端中输入命令运行。
JSON数据从MongoDB迁移到MaxCompute最佳实践

转载于:https://blog.51cto.com/14031893/2324428


http://www.niftyadmin.cn/n/989478.html

相关文章

天才们为什么独身一世?

蜀道之难,难于上青天。如果有人问:有什么比蜀道还难?老孙会说:思维。从一种思维到另一种思维之间的“蜀道”,更加艰难!男人和女人之间,就有那么一条蜀道。畅销书《男人来自火星,女人…

深入理解MYSQL undo redo

undo log保证事务的原子性(回滚) A、BeginB、记录A1到undo log中C、修改记录A3D、记录B1到undo log中E、修改记录B2F、写入undo log到磁盘中G、写入数据到磁盘中H、Commit 复制代码A-E步骤都是在内存中完成 A-F之间如果出现问题,由于undo log…

[编程题]圈地运动

[编程题]圈地运动 圈地运动,就是用很多木棍摆在地上组成一个面积大于0的多边形~ 小明喜欢圈地运动,于是他需要去小红店里面买一些木棍,期望圈出一块地来。小红想挑战一下小明,所以给小明设置了一些障碍。障碍分别是&a…

从现在开始要学习Python了

Python是个好东东,即没有C和C烦人的指针问题,功能似乎也比PHP要强不少,再重要的是它是纯粹的面向对象语言,语句清晰,容易理解,这对于学习来说有着很大的优势,学习语言的初期都是看别人代码的&am…

动态规划之 筷子

描述 A 先生有很多双筷子。确切的说应该是很多根,因为筷子的长度不一,很难判断出哪两根是一双的。这天,A 先生家里来了K 个客人,A 先生留下他们吃晚饭。加上A 先生,A夫人和他们的孩子小A,共K3个人。每人需要…

动态规划优化

状态优化 bzoj2064 分裂 存在通解&#xff1a;把原始集合都合并&#xff0c;再一一拆开。 如果可以划分一些集合&#xff0c;使得原始集合和目标集合对应的小集合相等&#xff0c;那么可以节省操作次数。 ans(n1-1)(n2-1)-2*(x-1) x为划分的相同集合数。 n<10,状压 另外&…

[讽刺笑话] 移动公司老板与公厕老大爷的经典对白

超强的移动公司老板与公厕老大爷的经典对白今天早上&#xff0c;移动公司某经理在外突然感觉内急&#xff0c;只好找公共厕所。“干什么的&#xff1f;”大爷喊。“我是移动老总&#xff0c;我内急。”经理。“你不知道现在什么都要收费啊&#xff1f;”大爷。“行&#xff0c;…

关于SD-WAN,你想知道的都在这里

SD-WAN是什么&#xff1f;SD-WAN&#xff0c;即软件定义广域网络&#xff0c;是将SDN/NFV/Cloud等技术应用到广域网中所形成的一种网络服务。这种服务通常用于连接不同区域的企业分支机构、数据中心、公有云等。SD-WAN出现背景随着“互联网”的深入推进&#xff0c;企业数字化进…