CDM大表分片操作
CDM配合DLF补数据功能,根据日期或者递增ID,配置作业自动分片迁移
1 基于将大表拆分成小段分段迁移,基于DLF补数据拆分段能力搞定;补数据功能可以根据dlf作业配置的调度周期(按月),下发时间参数给cdm解析成sql条件,自动拆分作业
2 数据pipeline: oracle(分段)---CDM---目的表
3 大表拆分策略:基于时间拆分和基于ID字段拆分
4 配置示例
4.1 数据样例
4.2 基于时间配置分片作业
1. 配置CDM作业,从oracle表拉取数据到hive临时表。根据时间字段,时间宏配置条件,dateformat时间由dlf传递;目的端导入前清空数据
配置CDM分片条件,按月拆分作业
Oracle条件:(cc >= to_date('${dateformat(yyyy-MM, 0, DAY)}','yyyy-mm') and cc <= to_date('${dateformat(yyyy-MM, +31, DAY)}','yyyy-mm'))
Mysql条件:cc >= '${dateformat(yyyy-MM, 0, DAY)}' and cc < '${dateformat(yyyy-MM, +31, DAY)}'
2. 配置迁移hive临时表数据到hive主表,配置hdfs文件迁移作业,直接迁移文件
3. 配置dlf作业节点,选择两个CDM节点,分别选取oracle2hive临时表,临时表2主表作业,并且配置调度周期为每月1号
4.补数据调度,选取需要抽取数据的时间段;然后dlf会在这个时间段,按照每月1号的调度时间下发给cdm解析
4.3 基于ID配置分片作业
1. 配置CDM作业
CDM不需要配置参数条件,每次调用通过dlf自动修改作业参数,然后分片执行;
2. 配置dlf作业
(1) 配置rest算子,自动修改cdm作业json体, 使用参数构造where条件
bb >= ${start} and bb <= ${end};
(2)CDM节点配置
(3)作业调度配置
配置作业参数start,end
start #{DateUtil.getDay(Job.planTime)*1000-1000}
end #{DateUtil.getDay(Job.planTime)*1000}
数字1000为每段作业id范围,可以根据需要调节,调度配置为按天;
则一共可以分成30段,即一个月每天的日期;
(4)补数据调度,选择一个月的时间
- 点赞
- 收藏
- 关注作者
评论(0)