(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210368943.4
(22)申请日 2022.04.08
(71)申请人 河钢数字技 术股份有限公司
地址 050000 河北省石家庄市高新区黄河
大道136号科技中心1号楼
(72)发明人 郑士良 刘威宪 黎荣华 安宝
刘东东 林楠 陈文豪 张夏楠
(74)专利代理 机构 石家庄知住优创知识产权代
理事务所(普通 合伙) 13131
专利代理师 王丽巧
(51)Int.Cl.
G06F 16/215(2019.01)
G06F 16/22(2019.01)
G06F 16/23(2019.01)
G06F 16/2458(2019.01)
(54)发明名称
一种基于HIVE的数据增量采集方法
(57)摘要
本发明公开了一种基于HIVE的数据增量采
集方法, 涉及大数据采集与数据清洗治理技术领
域。 该基于HIVE的数据增量采集方法在使用时,
只需要配置相关的采集任务和sql脚本任务, 将
sql脚本放入可执行带参数sql脚本的sql执行工
具中, 只暴露出表名, 创建时间, 更新时间, 主键,
原表可能会删除数据的时间段n, 用户只需填入
这几个关键信息进行sql执行任务配置, 即可统
一解决以上问题, 保证数据的一致性; sql脚本处
理流程复用性强, 形式灵活, 操作简单, 将sql脚
本放入执行工具, 只需填入相关参数, 即可进行
各类治理, 适用于hive库内所有类型的表及 表内
不同格式的时间字段的情况。
权利要求书3页 说明书8页 附图1页
CN 114647641 A
2022.06.21
CN 114647641 A
1.一种基于 HIVE的数据增量采集方法, 其特 征在于: 包括以下几个参数:
${PartDate}: 代表昨天的日期, 格式为年月日, 需要根据采集工具自身具体对于hive
分区采集时的设定参数进行填写;
${ods_table_name}: 采集至 hive的ods表名;
${only_id}: 确定表唯一的主键的组合 值
${REC_CREATE_TIM E}: 时间字段, 创建时间;
${REC_REVISE_TIM E}: 时间字段, 更新时间;
${check_days}: 源库会删除数据的时间段, 与第二步中采集源库的时间段保持一致,
比如源库会删除3 0天内的数据, 这里的值会设定为3 0;
上述具体实施步骤如下:
S1: 初始化采集全量数据, 适用于初始化采集或者需要重跑全量数据;
S2: 定时抽取源库在删除时间之内的数据至ods表;
S3: 对ods表进行sql脚本治理, 且治 理频率设置为每天, 同时定时执行之间设定在第二
步执行完毕之后;
S4: 定时永久存 储30210100分区数据。
2.根据权利要求1所述的一种基于HIVE的数据增量采集方法, 其特征在于: 在进行所述
初始化采集全量数据时, 第一个是普通任务, 抽取全量, 放入${Par tDate}分区;
第二个是sql脚本任务, 删除${PartDate}之前所有分区,并将最新全量数据放入_f表,
具体脚本如下:
首先, 抽取全量后删除之前的数据:
alter table${ods_table_name}drop partition(pt<${Par tDate});
alter table${ods_table_name}drop partition(pt='3 0210100');
其次, 重新抽数, 删除表也要重新 算数据:
truncate table${ods_table_name}_d;
最后, 将全量数据放入_f表:
SET hive.sup port.quoted.identifiers= None;
insert overwrite table${ods_table_name}_f
select*from${ods_table_name}。
3.根据权利要求1所述的一种基于HIVE的数据增量采集方法, 其特征在于: 在抽取所述
源库在删除时间之内的数据至ods表时, 分区名为pt= ’30210100 ’, 设定定时频率为每天抽
取, 定时时间根据业务需求时间确定,抽取源库表的sql可以根据源库表的时间字段来确
定, 假如只有一个时间字段, 可以写为:
select*from table where CREATION_DATE
>=to_char(sysdate ‑30,'yyyymmdd')
AND CREATION_DATE <to_char(sysdate, 'yyyymmdd')。
4.根据权利要求3所述的一种基于HIVE的数据增量采集方法, 其特征在于: 所述源库表
的时间字段为两个时, 其脚本可以写为:
select*from table where(CREATION_DATE>=to_date(to_char(sysdate ‑30,'YYYY ‑
MM‑DD'),'YYYY‑MM‑DD')权 利 要 求 书 1/3 页
2
CN 114647641 A
2AND CREATION_DATE <to_date(to_c har(sysdate, 'YYYY‑MM‑DD'),'YYYY‑MM‑DD'))
OR(LAST_UPDATE_DATE>=to_date(to_char(sysdate ‑30,'YYYY ‑MM‑DD'),'YYYY ‑MM‑
DD')
AND LAST_UPDATE_DATE<to_date(to_char(sysdate,'YYYY ‑MM‑DD'),'YYYY ‑MM‑
DD'))。
5.根据权利要求1所述的一种基于HIVE的数据增量采集方法, 其特征在于: 在对所述
ods表进行s ql脚本治理时, 创建带有合并主键的temp表, 简化对比主键的过程, 且 所述temp
表的表结构和表内容与ods表相同:
create table if not exists${ods_table_name}_temp as select*, ”
as only_id from${ods_table_name}l imit 0;
insert overwrite table${ods_table_name}_temp
select*,co ncat(${o nly_id})as only_id from${ods_table_name}。
6.根据权利 要求5所述的一种基于HIVE的数据增量采集方法, 其特征在于: 将所述temp
表中最新分区, 也就是pt=30210100的数据,即最新30天数据, temp表中的30天数据左查询
最新30天数据, 找出pt=30210100中为null的数据, 即为源库被删除数据, 将其插入ods_d
删除表中在所述源库需要一个时间字段增量采集时:
create table if not exists${ods_table_name}_d as select*from${ods_table_
name}_temp limit 0;
insert into${ods_table_name}_d
select a.*from${ods_table_name}_temp a
left join(select*from${ods_table_name}_temp wherept='3 0210100')b
on concat(a.o nly_id)=co ncat(b.o nly_id)
where a.${REC_CREATE_TIM E}>=regexp_replace(subst r(date_sub
(FROM_UN IXTIME(UNIX_TIMESTAMP() ),${check_days}),1,10), '‑',”)
and
a.${REC_CREATE_TIM E}<from_un ixtime(un ix_timestamp(), 'yyyyMMdd')and
b.only_id is null。
7.根据权利要求6所述的一种基于HIVE的数据增量采集方法, 其特征在于: 在所述源库
需要两个时间字段采集时:
create table if not exists${ods_table_name}_d as select*from${ods_table_
name}_temp limit 0;
insert into${ods_table_name}_d
select a.*from${ods_table_name}_temp a
left join(select*from${ods_table_name}_temp where pt='30210100')b
on concat(a.o nly_id)=co ncat(b.o nly_id)
where(a.${RE C_CREATE_TIM E}>=regexp_replace(subst r(date_sub
(FROM_UN IXTIME(UNIX_TIMESTAMP() ),${check_days}),1,10), '‑',”)
and
a.${REC_CREATE_TIM E}<from_un ixtime(un ix_timestamp(), 'yyyyMMdd')and权 利 要 求 书 2/3 页
3
CN 114647641 A
3
专利 一种基于HIVE的数据增量采集方法
安全报告 >
其他 >
文档预览
中文文档
13 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共13页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 思考人生 于 2024-02-24 08:50:03上传分享