Hive数据去重举例:
Hql代码
INSERT overwrite TABLE store SELECT
t.p_key,
t.sort_word
FROM
(
SELECT
p_key,
sort_word,
row_number () over (
distribute BY p_key sort BY sort_word
) AS rn
FROM
store
) t
WHERE
t.rn = 1;
说明:
- p_key为去重所依据的key,sort_word表示多个p_key的排列顺序,这个关键字将决定哪个p_key将留下。
- t 为子查询的别名,Hive需要在每个子查询后面加别名
- t.rn=1表示重复的数据只保留第一个。
- distribute by 关键字指定分发的key,同一个key将分发到同一个reducer
- sort by 是单机范围内排序,因此配合distribute by 就可以对某一个关键字排序
应用举例:
表一数据: