全量&增量数据同步方法(Hive date_add & date_sub)

本文介绍全量数据与增量数据同步的方法,包括不关心主键时的直接全量同步与增量同步策略,以及关心主键时如何通过临时表进行增量数据与目标数据的合并。同时介绍了Hive中用于日期操作的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全量数据与增量数据同步
1、不关心主键:
a、第一次直接全量同步:
insert overwrite table target select * from source
b、第二次以后采用增量同步:表一般都有
createtime, updatetime
如:

insert into table target
select  * from source where to_date(updatetime) >= date_add(CURRENT_DATE,-1) /(方式二)date_sub(to_date(CURRENT_TIMESTAMP),1)

2.关心主键:
a、研发落表,都有主键id,MySql

– 创建临时表,同步过来的数据加载到临时表:
load data local inpath ‘/tmp.txt’ overwrite into table tmp

–增量数据和目标数据合并

LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

insert overwrite table target
--新增数据
select * from tmp
union all
--未新增的数据
select a.* from target a
left join tmp b
on a.id = b.id
-- a表中有的id而b表中没有的id
where b.id is null
删除临时表:
drop table if exists tmp;

b、比如用户针对一个订单发生多次改派,这里我们只关心终态
order_id updatetime rank
10001 2020-12-26 12:00:01 3
10001 2020-12-26 12:00:10 2
10001 2020-12-26 12:00:13 1

select * 
from 
(select *
,row_number() over (partition by order_id updatetime desc ) rank
from target
) t
where t.rank=1

Hive日期比较函数详解

to_date函数:
select to_date(‘2018-12-08 10:03:01’);–2018-12-08 返回日期时间字段中的日期部分

1.日期比较函数: datediff语法: datediff(string enddate,string startdate)
返回值: int
说明: 返回结束日期减去开始日期的天数。

举例:

hive> select datediff(‘2020-12-30’,‘2020-12-29’);

1

2.日期增加函数: date_add语法: date_add(string startdate, intdays)
返回值: string
说明: 返回开始日期startdate增加days天后的日期。

举例:

hive>select date_add(‘2020-12-29’,10);

2021-01-08

3.日期减少函数: date_sub语法: date_sub (string startdate,int days)
返回值: string

说明: 返回开始日期startdate减少days天后的日期。

举例:

hive>select date_sub(‘2020-12-29’,10);

2020-12-19

4.查询近30天的数据

select * from table where datediff(current_timestamp,create_time)<=30;

create_time 为table里的字段,current_timestamp 返回当前时间 2020-06-01 11:00:00

Hive中的date_add函数用于在给定日期上添加指定的天数。它的使用方法如下: date_add(date, num_days) 其中,date是要添加天数的日期,num_days是要添加的天数。这个函数将返回新的日期,即原始日期加上指定的天数。 例如,如果我们想在2021-08-11这个日期上添加3天,可以使用以下语句: SELECT date_add(&#39;2021-08-11&#39;, 3); 这将返回新的日期2021-08-14。 除了date_add函数,Hive中还有其他一些日期函数可供使用,如weekofyear函数用于将日期转换为一年中的第几周,dayofyear函数用于将日期转换为一年中的第几天,add_months函数用于在当前日期上添加或减去指定的月份,datediff函数用于计算两个日期之间的天数差值。 总结来说,Hive中的date_add函数可以在给定日期上添加指定的天数,用法为date_add(date, num_days)。同时,还可以使用其他日期函数来进行更多的日期操作。 &lt;span class=&quot;em&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;em&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;em&quot;&gt;3&lt;/span&gt; #### 引用[.reference_title] - *1* *2* [hive最全的常用时间函数(非常全,建议收藏)](https://blog.youkuaiyun.com/weixin_40267121/article/details/118892380)[target=&quot;_blank&quot; data-report-click={&quot;spm&quot;:&quot;1018.2226.3001.9630&quot;,&quot;extra&quot;:{&quot;utm_source&quot;:&quot;vip_chatgpt_common_search_pc_result&quot;,&quot;utm_medium&quot;:&quot;distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2&quot;}}] [.reference_item style=&quot;max-width: 50%&quot;] - *3* [Hive_UDF:平时工作中遇到一些需求是HIVE原生的UDF不能满足的或者用原生的实现起来复杂,故开发一些定制化的...](https://download.youkuaiyun.com/download/weixin_42099151/19954219)[target=&quot;_blank&quot; data-report-click={&quot;spm&quot;:&quot;1018.2226.3001.9630&quot;,&quot;extra&quot;:{&quot;utm_source&quot;:&quot;vip_chatgpt_common_search_pc_result&quot;,&quot;utm_medium&quot;:&quot;distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2&quot;}}] [.reference_item style=&quot;max-width: 50%&quot;] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值