在hive中创建一张表作为原始数据
create table if not exists data1(
user_id int,
register_date string,
user_tel string,
end_date string
) row format delimited fields delimited by '\t';
用load方式加载一些数据进去
用sqoop从数据库中抽取改动过的数据和新增的数据
在此我直接创建data2并加载更新的数据
create table if not exists data2(
user_id int,
register_date string,
user_tel string,
end_date string
) row format delimited fields delimited by '\t';
用load方式加载一些更新和新增的数据
此时的data2表的数据源相当于用sqoop从mysql抽过来的
为了能让用户的信息有所保留,所以要实现的结果为:当用户修改了数据,以前的数据不能删
insert
overwrite table data1
SELECT
c.user_id,
c.register_date,
c.user_tel,
CASE
WHEN c.register_date < CURRENT_DATE()
AND COUNT(*) over(PARTITION BY c.user_id) > 1 THEN CURRENT_DATE()
ELSE c.end_date
END
FROM
(
SELECT
*
FROM
data1
UNION
SELECT
*
FROM
data2
) c;