hive数据增量同步方案

1-每天全量同步

如人员表、订单表一类的会发生变化的数据,根据数据仓库的4个特点里的反映历史变化的这个特点的要求,我们建议每天对数据进行全量同步。也就是说每天保存的都是数据的全量数据,这样历史的数据和当前的数据都可以很方便地获得。

设定日分区,每天同步全量数据。

--全量同步
create table ods_user_full(
    uid bigint,
    uname string,
    deptno bigint,
    gender string,
    optime DATETIME 
) partitioned by (ds string);

查询全量用 where 分区 语句 如 where ds = "2017-10-19"

2-每天增量同步

真实场景中因为某些特殊情况,需要每天只做增量同步。又因为目前流行的大数据平台都不支持 Update 语句进行修改数据,只能用其他方法来实现。

  • 两个表,结果表和增量表,用 full outer join 合并 + insert overwrite(阿里巴巴大数据实践中阿里平台使用方案)

操作如下:

--结果表
create table dw_user_inc(
    uid bigint,
    uname string,
    deptno bigint,
    gender string,
    optime DATETIME 
);
--增量记录表
create table ods_user_inc(
    uid bigint,
    uname string,
    deptno bigint,
    gender string,
    optime DATETIME 
)
insert overwrite table dw_user_inc 
select 
--所有select操作,如果ODS表有更新数据,就会关联上
case when b.uid is not null then b.uid else a.uid end as uid,
case when b.uid is not null then b.uname else a.uname end as uname,
case when b.uid is not null then b.deptno else a.deptno end as deptno,
case when b.uid is not null then b.gender else a.gender end as gender,
case when b.uid is not null then b.optime else a.optime end as optime
from 
dw_user_inc a 
full outer join ods_user_inc b  --标准
on a.uid  = b.uid ;

对比以上两种同步方式,可以很清楚看到两种同步方法的区别和优劣。第二种方法的优点是同步的增量数据量比较小,但是带来的缺点有可能有数据不一致的风险,而且还需要用额外的计算进行数据合并。如无必要,会变化的数据就使用方法一即可。如果对历史数据希望只保留一定的时间,超出时间的做自动删除,可以设置Lifecycle。

3-不变的数据增量同步

这个场景,由于数据生成后就不会发生变化,因此可以很方便地根据数据的生成规律进行分区,较常见的是根据日期进行分区,比如每天一个分区。做法是按日期字段 where 过滤所需日期,增量 insert。

在将数据Hive同步到Elasticsearch时,使用Seatunnel 增量同步是一种有效的解决方案。Seatunnel 是一个开源工具,能够实现数据源(如Hive)与目标地(如Elasticsearch)之间的数据同步。 Seatunnel 增量同步实现的基本原理是通过监控数据源中的变化,将新增、更新和删除的数据实时同步到Elasticsearch中。当数据源中的数据发生变化时,Seatunnel会捕获变动的数据,并将其同步到Elasticsearch中相应的索引中。 具体来说,Seatunnel 增量同步的步骤如下: 1. 安装并配置Seatunnel:首先需要在系统中安装Seatunnel,并进行相应的配置,包括指定Hive和Elasticsearch的连接信息、定义数据同步的规则等。 2. 监控数据源:Seatunnel会不断地监控Hive中的数据变化。当有新增、更新或删除操作发生时,Seatunnel会将这些变动的数据捕获并记录下来。 3. 数据同步:Seatunnel将捕获到的变动数据转换成Elasticsearch可以接收的格式,并将其同步到相应的索引中。对于新增的数据,Seatunnel会将其插入到Elasticsearch中;对于更新和删除的数据,Seatunnel会根据指定的规则更新或删除Elasticsearch中对应的文档。 通过Seatunnel 增量同步,可以实现Hive数据到Elasticsearch的实时同步。这样做的好处是能够保持Elasticsearch中的数据Hive中的数据保持一致,使得Elasticsearch的搜索结果能够及时地反映Hive数据的最新变化。同时,Seatunnel还提供了监控和告警机制,可以实时监控数据同步的状态,并在发生异常时发出警报,保证同步过程的稳定性和可靠性。 总之,Seatunnel 增量同步是一种可靠高效的数据同步方案,能够将Hive中的数据实时同步到Elasticsearch中,为企业提供更快速准确地数据查询和分析能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值