##Hive数据去重

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了##Hive数据去重相关的知识,希望对你有一定的参考价值。

参考技术A Hive数据去重 - 菠萝大数据梦工厂(Free World) - 博客频道 - CSDN.NET http://blog.csdn.net/jiangshouzhuang/article/details/49401469

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;

说明:

hive数据去重

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能

hive的元数据存储:通常是存储在关系数据库如 mysql(推荐) , derby(内嵌数据库)中

hive的组成部分 :解释器、编译器、优化器、执行器

hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析

hive中的数据表分为内部表、外部表

当删除内部表的时候,表中的数据会跟着一块删除

删除外部表时候,外部表会被删除,外部表的数据不会被删除

 

使用hive之前需要启动hadoop集群,因为hive需要依赖于hadoop集群进行工作(hive2.0之前)

 

以下是对hive重复数据处理

先创建一张测试表

技术分享图片

建表语句:create table hive_jdbc_test (key string,value string)   partitioned by (day string) row format delimited fields terminated by ‘,‘  stored as textfile

 

准备的数据
  uuid,hello=>0
  uuid,hello=>0
  uuid,hello=>1
  uuid,hello=>1
  uuid,hello=>2
  uuid,hello=>2
  uuid,hello=>3

 

把数据插入到2018-1-1分区

技术分享图片

 

此时我们对hive表数据进行去重操作

insert overwrite table hive_jdbc_test partition(day=‘2018-1-1‘)
select key,value
from (SELECT *, Row_Number() OVER (partition by key,value ORDER BY value desc) rank
FROM hive_jdbc_test where day=‘2018-1-1‘) t
where t.rank=1;

技术分享图片

 

此时重复数据会被处理完毕

技术分享图片

 












以上是关于##Hive数据去重的主要内容,如果未能解决你的问题,请参考以下文章

hive数据去重

Hive sql大数据有道之Hive sql去重

Hive学习之数据去重

hive中多行合并一行concat_ws(去重及不去重)

python去重(汉字一样,里面的编码不一样)?

Hive sql去重