Hive数据去重

Hive数据去重


insert overwrite table ta_customers    
  select t.ta_id,t.ta_date from     
    ( select ta_id,    
           ta_date ,    
           row_number() over(distribute by ta_id sort by ta_date desc) as rn   
     from ta_customers) t    
     where t.rn=1;    


说明:
1. ta_id 为去重所依据的key, ta_date 表示多个 ta_id 的排列顺序,这个关键字将决定哪个 ta_id 将留下

2. t.rn=1表示重复的数据只保留第一个,本例中将保留最新日期的的 ta_id

3. distribute by 关键字指定分发的key,同一个key将分发到同一个reducer

4. sort by 是单机范围内排序,因此配合distribute by 就可以对某一个关键字全局排序




你可能感兴趣的:(Hive数据去重)