阿里云大数据利器之-RDS迁移到Maxcompute实现动态分区

点击查看全文


当前,很多用户的业务数据存放在传统关系型数据库上,例如阿里云的RDS,做业务读写操作。当数据量非常大的时候,此时传统关系型数据库会显得有些吃力,那么会经常有将mysql数据库的数据迁移到[大数据处理平台-大数据计算服务(Maxcompute,原ODPS)( https://www.aliyun.com/product/odps?spm=5176.doc27800.765261.309.dcjpg2),利用其强大的存储和计算能力进行各种查询计算,结果再回流到RDS。
         一般情况下,业务数据是按日期来区分的,有的静态数据可能是按照区域或者地域来区分,在Maxcompute中数据可以按照分区来存放,可以简单理解为一份数据放在不同的子目录下,子目录的名称以日期来命名。那么在RDS数据迁移到Maxcompute上的过程中,很多用户希望可以自动的创建分区,动态的将RDS中的数据,比如按日期区分的数据存放到Maxcompute中,这个流程自动化创建。同步的工具是使用Maxcompute的配套产品-[大数据开发套件]( https://data.aliyun.com/product/ide?spm=5176.7741945.765261.313.TQqfkK)。下面就举例说明RDS-Maxcompute自动分区几种方法的使用。
一,将RDS中的数据定时每天同步到Maxcompute中,自动创建按天日期的分区。
这里就要用到大数据开发套件-数据集成的功能,我们采用界面化的配置。
如图地方,设置Maxcompute的分区格式
7e6208ade7eb6988d5825185cdfcb21eee2fe20c
一般配置到这个地方的时候,默认是系统自带时间参数:${bdp.system.bizdate} 格式是yyyymmdd。也就是说在调度执行这个任务的时候,这个分区会被自动替换为 **任务执行日期的前一天**,相对用户比较方便的,因为一般用户业务数据是当前跑前一天的业务数据,这个日期也叫业务日期。
如图
742352e50f703175b018316749fae8b154756380

如果用户想使用当天任务运行的日期作为分区值,需要自定义这个参数,方法如图,也可以参考文档
https://help.aliyun.com/document_detail/30281.html?spm=5176.product30254.6.604.SDunjF
自定义的参数,格式非常灵活,日期是当天日期,用户可以自由选择哪一天,以及格式。
可供参考的变量参数配置方式如下:
后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]
后N分钟:$[hh24miss+N/24/60]
前N分钟:$[hh24miss-N/24/60]
注意:
请以中括号 [] 编辑自定义变量参数的取值计算公式,例如 key1=$[yyyy-mm-dd]。
默认情况下,自定义变量参数的计算单位为天。例如 $[hh24miss-N/24/60] 表示 (yyyymmddhh24miss-(N/24/60 * 1天)) 的计算结果,然后按 hh24miss 的格式取时分秒。
使用 add_months 的计算单位为月。例如 $[add_months(yyyymmdd,12 N)-M/24/60] 表示 (yyyymmddhh24miss-(12 N 1月))-(M/24/60 1天) 的结果,然后按 yyyymmdd 的格式取年月日。
如图,配置完成后,我们来测试运行看下,直接查看日志
e8db68c9ea59598baf83fbf25763252531592b3f
可以,看到日志中,Maxcompute(日志中打印原名ODPS)的信息中
partition分区,date_test=20170829,自动替换成功。
再看下实际的数据过去了没呢
91a1c862682c842c32d9d9301f0b81eb8f3b36d2
我们看到数据是过来了,成功自动创建了一个分区值。那么这个任务定时调度的时候,就会自动生成一个分区,每天自动的将RDS中的数据同步到Maxcompute中的按照日期创建的分区中。
二,如果用户的数据有很多运行日期之前的历史数据,怎么自动同步,自动分区呢。大数据开发套件-运维中心-有个补数据的功能。
首先,我们需要在RDS端把历史数据按照日期筛选出来,比如历史数据2017-08-25这天的数据,我要让他自动同步到Maxcompute的20170825的分区中。
在RDS阶段可以设置where过滤条件,如图
978e24ec0e6466cb970fdeaf6dace94d7300c9df
在Maxcompute页面,还是按照之前一样配置
5fca7fcd1e56cb358c1907239207f925f5a254d5
然后一定要 保存-提交。
提交后到运维中心-任务管理-图形模式-补数据


点击查看全文


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值