MaxCompute实践

  • 时间:
  • 浏览:1

可能性大伙儿mongodb表中表示数据"最后更新时间"的字段为updated_at,其存放的内容为unix时间戳。

mongodb中将日期格式化成unix时间戳的辦法 是:ISODate("2012-10-15T21:26:17+060 0").valueOf() / 60 0

在“大数据开发套件”中同步数据主要使用时间段的辦法 进行同步,主要分为一一兩个 多步骤,第一步为手动全量同步,第二步为自动每日增量。可能性想让数据的每条数据按数据的创建时间存放上去对应的日期句子,则都还可不可不可以 在此基础上进行细化。针对不同的数据(会变化与不想变化)的解决辦法 也各有所不同,基本上是按照文档中所描述的进行了,就是稍微一些不同。

注: odps_test是就是同步数据的脚本模式的任务名称。

增量表表名后缀:_ inc

参考同步不想变化的数据

可能性左侧能提供一一兩个 多树形菜单将多级分类列出,点击就能查看对应分类下的表就方便多了。

创建时间字段: created_at

更改时间字段: updated_at

时间字段值: unix时间戳

表特征定义如下:

执行ODPS_SQL复制odps_test_history表并命名为odps_test作为最终目标表。

在数据开发->任务开发中创建一一兩个 多节点任务,任务名称使用_merge结尾

有之前 大伙儿运行后,程序报错无法运行了,报错信息为说是格式的问題,解析不了。

数据主要分为会变化的数据(有修改+有增加)与不想变化的数据(只增加),官方文档中是建议每天全量的同步策略,即每天的数据作为一一兩个 多副本存至同步日期为分区,之前 做随便说说有什么都的好处。

但实际情況可能性可能性数据量过大,每天同步可能性会花更多的时间(测试过1亿数据相当于在3~4小时左右,脚本参数配置speed": { "concurrent": "1", "mbps": "1" }),可能性大伙儿业务中不处在DELTE操作,什么都大伙儿这里解决不管数据算是变化都使用每日增量的辦法 解决,最终按数据的创建日期存放上去对应的分区(前期就是知道为什么在么在在么在设计,何如设计最佳,什么都就先设计为1级分区),随便说说之前 都还可不可不可以 多做一步合并操作,多耗费一些资源费用,但随便说说是实现大伙儿的要求。

执行ODPS_SQL将数据导入到最终目标表中。

数据表名: odps_test_history

分 区 名: pt

分 区 值: 数据的创建日期

表特征定义如下:

更新同步脚本,并将任务进行提交,之前 的第一步操作的暂停记得勾掉。

更改后的同步脚本如下,请注意蓝绿色每种:

可能性想数率更高一些可使用下方句子,当字段created_at有索引时都都还可不可不可以 命中:

并输入以下内容:

更改后的同步脚本如下,请注意蓝绿色每种:

可能性太长不好截图,什么都脚本模式这里的where的参数值使用:

目前大伙儿主要有四种 数据源的数据都还可不可不可以 放至MaxCompute中进行解决,四种 为MySQL,四种 为MongoDB。在此主要描述MySQL相关的,至于MongoDB嘛,看后最后你就会知道了^_^。

当mongodb中字段为unix时间戳时,可能性使用query参数进行过滤?

注意事项

A. 为方便演示,继续使用test表来作为演示表。

B. 同步会变化的数据与不想变化的数据,前面兩个 步骤一样是一样,在此不进行复述。

可能性大伙儿有血块的Mysql数据表都还可不可不可以 导入,发现有个整库迁移的工具都都还可不可不可以 使用,刚发现时就怦然心动,然而经过实测后大失所望,可能性该工具日期字段的值都还可不可不可以 是yyyymmdd格式,像大伙儿使用UNIX时间戳压根如此 用。

另外该功能不支持表字段指定,可能性一些数据表字段过于敏感想不进行同步,就是能设置。

执行ODPS SQL,如一一兩个 多数一样则说明导入成功,如不一样,请重试。

一些人之前 一直从事程序开发的(PHP、JAVA、Python)工作,在之前 的工作经历中含过一段时间配合Hadoop工程师的事务,但接触的四种 深,只能说略知点皮毛,特别管中窥豹的感觉。

今年进了新公司,可能性公司正在组建新的数据部门,非常有幸一些人得以调入该部门,恰逢MaxCompute横空出世,刚好可能性我那时工作比较空闲,得以安排调研它的功能及测试算是符合大伙儿的要求。

可能性一些人对大数据这块的经验处在问题,涉及的内容也也有太高端的,所得知识基本是通过阅读文档获得,什么都本文仅以初学者的深度图去阐述,主要围绕数据迁移这块,一些每种还未来得急涉及,如有不正确的地方,还请指出,谢谢。

大伙儿在测试使用数据同步更新,使用query参数过滤数据,按文档中所描述,语法参照MongoDB查询语法

https://help.aliyun.com/knowledge_detail/60 354.html?spm=a2c1i.8282367.0.0.OPStre

以下为我的同事在使用中的经验总结,在此我一齐提一下:

MaxCompute的kettle插件的问題(一些人只用过Aliyun MaxCompute Output,如此 用过Aliyun MaxCompute Input,有之前 只对Output每种做评价):

参考同步不想变化的数据

随便说说MaxCompute有多种迁移方案可供选则,但可能性使用大数据开发套件上的脚本模式都都还可不可不可以 有效完成句子,一些人还是比较倾向使用大数据开发套件去完成,除非在此之上无法完成。可能性相对于一些人使用SDK直接同步或一些工具去实现,大数据开发平台要简单快速的多,任务调度系统完善,任务运行情況相对清晰便于查错,之前 更多任务都都还可不可不可以 灵活组合搭配。

参考同步不想变化的数据

将合并数据的任务的上游任务设置为每日增量同步数据那个任务,并提交即可。

如下为导入数率对比结果:

执行ODPS SQL,创建一张增量表

报错信息如下:

2017-06-23 20:46:32.647 [job-37098472] ERROR JobContainer - Exception when job run

脚本配置如下:

因初期数据量相对较小,使用Kettle进行抽取数据等工作,ETL的工作大每种在MySQL数据仓库中完成。多种数据源使用Presto(集群)作为查询底下键进行相应的数据分析。但随着业务的疯狂增长,数据表单表达到数亿后,磁盘容量达数几百GB时,数据要求的错综复杂度逐步提升,使用MySQL作为基础数据仓库的基石可能性处在问题以应付,常老出查询响应时间等待的图片 过长,甚至内存崩溃意味着执行失败的情況,极大的影响了工作数率。什么都使用选则一款大数据平台势在必行。初期考虑使用Hadoop来做进行数据分析平台,恰逢MaxCompute横空出世给大伙儿一一兩个 多新的选则,在经过仔细比对后,考虑到公司新数据部门刚成立不久,Hadoop大数据相关人才储备较为紧缺,可能性等待的图片 Hadoop体系完成搭建并使用,可能性都还可不可不可以 更多的时间,而这势必会拖慢之前 的工作进度。而可能性使用MaxCompute相对于自建Haoop数据平台要简单,快速的多,但任何产品在正式使用前必然都还可不可不可以 进行删剪的调研,什么都你都都还可不可不可以 现在开始了了英语 调研的过程。

参考同步不想变化的数据

通过脚本模式将小于当前日期(2017-07-13)的所有的数据一次性导入到一张临时表中。

在数据开发中点击测试运行,看后任务成功运行后,在任务设置调度参数中设置暂停(测试运行不想受到调度干扰,直接运行)。

根据该写法,那在脚本模式中的写法将是:

"query": "{'updated_at':{'$gte':ISODate('${last_day}T00:00:00.424+060 0').valueOf() / 60 0}}",

大伙儿花了时间查看文档依旧如此 得到答案,所之前 来请教一下。

可能性执行到四种 步基本上就完成了,隔天就会在你在设定时间内运行,你也都都还可不可不可以 去运维中心中查看你的任务情況。

下面附上”会变化的数据“数据同步的删剪流程图:

如确认数据无误,则都都还可不可不可以 删除临时表。当然你也都都还可不可不可以 不删除,以便出了错只需将此时间节点内的数据导入即可,解决从头导入的过程。

可能性各种意味着大伙儿一现在开始了了英语 是拿MongoDB进行的测试,为此专门找DBA挑一张较小的数据表( 约3GB左右)进行。按照文档中描述,使用脚本模式根据文档进行了配置,随便说说很挺简单的,什么都进行任务测试,任务如期正常运行,但经过观察发现数据同步的数率逐步下降,最你都都还可不可不可以 无法忍受的只能10KB/S,该表同步了20多个小时都没同步完,最后任务自行中止了。经过询问相关技术人员,可能性可能性Mongodb同步数据的底层实现还处在一些问題意味着同步数率过慢意味着的。为此只能选则替代方案,主要集中在“基于Kettle的MaxCompute插件”及“基于Tunnel SDK开发”,经过比对后考虑到开发数率及同步数率,最终选则暂时采用Kettle来进行mongodb的导入工作。

接触一件新事务时遇到了困难,有之前 一些人无法解决时,难免会感到彷徨无助,有种挫败感。

万幸的是我在钉钉上找到了组织,非常感谢阿里云MaxCompute项目组的@数加·祎休(yī xiū)@一斅@彭敏@李珍珍等工作人员的鼎力支持,在大伙儿提交问題后,不厌其烦及时有之前 认真的回答解决大伙儿的问題,祝大伙工作顺利,事事顺心。

org.bson.json.JsonParseException: Invalid JSON input. Position: 62. Character: '.'.

可能性执行到四种 步基本上就完成了,隔天就会在你在设定时间内运行,你也都都还可不可不可以 去运维中心中查看你的任务情況。

下面附上”不想变化的数据“数据同步的删剪流程图:

四种 问題我之前 也有提交过工单,工单内容如下:

参考同步不想变化的数据