1、hive 0.8.0数据表去重方法
问题描述:hive的外部表test中,在若干字段上存在重复现象,现在需要将若干字段上值相同的多条记录,只保其中留一条,
舍弃其余的。
解决思路:
(1)group by的方法
首先新建与test表完全相同的新表test_pure,然后利用group by在有相同值的若干字段上进行分组统计,正常情况下,hive sql的select是无法取到非group by的字段,采用
collect_set(非group by字段)[0],从分组统计的非group by字段值集合中,取到其中一个,按此方式取得所有非group by字段,然后将
所有字段的值,insert 到新建的表中。
a、建表
set mapred.job.name = 'chachong';
set mapred.job.map.capacity = 300;
set mapred.job.reduce.capacity = 300;
set hive.exec.reducers.max = 300;
set hive.mapred.mode=nonstrict;
set hive.map.aggr=true;
set hive.groupby.skewindata=true;
set mapred.job.priority=VERY_HIGH;
db = database me;
use db;
drop table if exists yuliao_pure;
cr