阿里云数加平台——数据同步任务调度及管理

在做大数据开发和分析时,其实流程和以前做数据仓库有类似的地方。第一步总是需要做数据收集、其次做数据清洗,然后才会进行后续的处理分析。那么首要的任务就是要把数据收集到一个适合的地方,如果是采用阿里云的大数据平台,这个适合的地方就ODPSODPS的作用就是用来存储数据和计算数据的。从我个人目前接触的数据分析项目来看,数据来源一般来自两处,一个是日志文件,一个是业务数据库中的表。针对这两种数据源,阿里云提供了两种解决方案:

1.使用“日志服务”来进行日志文件的收集

2.使用“数加服务”中的数据开发—任务开发来采集业务数据库中的表的数据

以上两种方式收集到的数据最终都会落到ODPS中的表中。本文主要介绍“采集业务数据库中的表的数据”的方式,即如何使用“数加服务-数据开发-任务开发”。先截张图,来看下在数加服务的数据开发中都提供了哪些功能,如下图:

 

从图中可看到有“任务开发”、“脚本开发”、“资源管理”、“函数管理”、“表查询”这几个功能。各个功能作用如下:

       表查询:提供了UI界面对ODPS中的表进行方便的管理以及表中数据预览功能

       函数管理:系统函数及自定义函数的管理以及使用帮助的查看。

       脚本管理:这里是管理、存储、调试SQL脚本的地方,这些SQL是针对ODPS中的表的,其实也类似于hive的语法。

       资源管理:管理ODPS需要使用的额外jar,比如我们的mapreducejob或者是UDF的函数的jar

我们做业务数据库中的数据收集和清洗时一般会先把业务数据库的表的数据同步到ODPS相应的表上,然后通过执行计算,把产生的数据插入到另一张表A中,因为ODPS不适合做实时查询,这个A表的数据我们通常就会导入到阿里云另一个产品“分析型数据库”(也叫ADS)中。然后通过使用“BI报表”就能做出我们想要的报表和图表。下面我们分别来介绍如何做同步和如何做计算。

 

数据同步

任务开发中包含了两种任务类型,一个是“工作流任务”,另一个是“节点任务”。

工作流任务中可以配置多个任务,任务和任务之间有依赖关系,可以通过流程图的方式进行配置。如图:

节点任务就是单一任务。具体的任务又分三种:ODPS_SQL、数据同步和机器学习。ODPS_SQL任务是用来做数据计算用的(或称数据清洗也可以),数据同步任务就是用来完成ODPSRDS(关系型数据库)中的表数据的双向同步的,机器学习任务是用来做数据深入分析和挖掘用的。本文只介绍数据同步任务,其实这个任务的配置很容易理解,选中源表和目的表,然后对两边字段做个映射配置,设好调度执行的周期就可以了,还是截个图直观的看下:

源表和目的表的映射配置:

调度执行的配置:

参数的配置:

在数据同步任务中,参数主要是用在配置增量同步时,在数据过滤这里配置,通过数据过滤我们能控制同步哪些数据。并且控制条件是可以动态的,所以参数在这里就起作用了。参数分两类,系统参数阿里云提供了两个,分别是:

${bdp.system.bizdate}

格式yyyymmdd,日常调度实例定时时间的前一天(年月日)。节点每天自动调度实例定时时间年月日减1天。

${bdp.system.cyctime}

格式yyyymmddhh24miss,日常调度实例定时时间(年月日时分秒)。yyyy表示4位数年份,mm表示2位数月份,dd表示2位数天,hh24表示24小时制的时,mi表示2位数分钟,ss表示2位数秒。

自定义参数

声明变量方式:${变量名}

自定义参数支持代码中自定义变量名,调度的时候需要给自定义变量名指定赋值。在大数据开发套件中以${变量名}方式来声明变量,在参数中以变量名=调度参数或常量的方式来赋值。

$[…]基于系统参数${bdp.system.cyctime}进行自定义格式

${bdp.system.cyctime}=$[yyyymmddhh24miss]可以任意分解组合,以及指定格式,如定时时间年月日$[yyyymmdd]、$[yyyy-mm-dd]等格式可自定义,定时时间时分秒$[hh24miss]、$[hh24:mi:ss]等格式可自定义。

【注意】:所有参数都不允许包含空格!

获取+/-周期的方法:

  • 后N年:$[add_months(yyyymmdd,12*N)]

  • 前N年:$[add_months(yyyymmdd,-12*N)]

  • 后N月:$[add_months(yyyymmdd,N)]

  • 前N月:$[add_months(yyyymmdd,-N)]

  • 后N周:$[yyyymmdd+7*N]

  • 前N周:$[yyyymmdd-7*N]

  • 后N天:$[yyyymmdd+N]

  • 前N天:$[yyyymmdd-N]

  • 后N小时:$[hh24miss+N/24]

  • 前N小时:$[hh24miss-N/24]

 

同步时我们即可以做全量同步,也可以做增量同步,其实就需要源表能有类似于“创建时间”、“最后更新时间”、“是否失效”、“失效时间”这样的字段来结合系统提供了两个参数可配合使用,就能达到增量同步的目的。但这里要多说几句,直接的增量同步是做不到的,只能间接的做,因为数据同步任务只会往“目的表”中插入数据,并不会对目的表数据做更新和删除。所以做增量同步时,目的表应该是一张临时表,这样我们再通过SQL任务把从临时表中提取增量数据,然后对ODPS的表进行批量更新。具体怎么做就不细说了,懂的人一听就明白了。

  数据同步任务配置完成后,就得进行测试,所以也提供了测试按钮进行测试操作,在测试时需要指定同步数据的“业务日期”,如果测试是成功的,那设定的日务日期的数据就真的会同步过来。如果测试通了,我们还需要提交一下任务,这样整个配置才会生效。但是真正的调度一定是要在次日才会产生。那么如果此时我们也可进入“运维中心”通过补数据的功能,把历史数据同步过来。

日常的时候我们就可以通过运维中心去监控任务的运行情况,如果失败了,也能够在运维中心查看到日志。

 

posted @ 2016-08-18 14:39  杭州胡欣  阅读(4529)  评论(0编辑  收藏  举报