hive 列表去重_hive数据表去重方法

本文介绍了在Hive 0.8.0和0.11.0版本中进行数据去重的方法。针对Hive表中存在重复记录的问题,提出了使用`GROUP BY`结合`COLLECT_SET`函数以及利用`ROW_NUMBER()`窗口函数的解决方案,详细阐述了两种方法的实现步骤,并对Hive获取非`GROUP BY`字段和查重策略进行了总结。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值