hive 學習系列六 hive 去重辦法的思考

2021-08-28 05:40:52 字數 1597 閱讀 8659

create table if not exists tubutest (

name1 string,

name2 string

)row format delimited

fields terminated by ','

stored as textfile;

select * from ods.wdtest;

1 11 1

1 21 2

1 32 3

2 32 4

select name1,collect_set(name2) from tubutest group by name1;

name1 _c1

1 ["2","3"]

2 ["2","4"]

create view ods.wdtestview as

select name1,collect_set(name2) as name2 from ods.wdtest group by name1;

select * from ods.wdtestview;

name1 name2

1 ["2","3"]

2 ["2","4"]

select name1, name2 from tubuview lateral view explode(name2) tubuview as name2;

a,collect_set 完成把多行轉化成一行的功能。

b,explode 完成把一行轉化成多列的功能。 而 lateral view 主要是輔助 explode 進行使用,來完成類似去重的功能。

比如,我有一大堆的**,

**內容大多類似,只是有些許差別。

現在的需求是把我要統計所有的**中,都有哪些字段,也就是把所有的**整合成一張大表

則可以利用row_number 進行去重

最終的**如下:

需要進行去重,

則可以利用row_number 進行去重(去蟲),方法如下

select 

name,

type_name,

comment_deatail

from

(select

name,type_name,comment_deatail,

row_number() over(partition by name order by type_name) as row_count

from demo) t

where row_count=1;

hive 列表去重 Hive 資料去重

實現資料去重有兩種方式 distinct 和 group by 1.distinct消除重複行 distinct支援單列 多列的去重方式。單列去重的方式簡明易懂,即相同值只保留1個。多列的去重則是根據指定的去重的列資訊來進行,即只有所有指定的列資訊都相同,才會被認為是重複的資訊。1 作用於單列 se...

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 de...

hive 去重 字串 hive 函式

substr string a,int start,int len substring string a,intstart,int len 用法一樣,三個引數 返回值 string 說明 返回字串a從start位置開始,長度為len的字串,下標預設為1.若沒有長度預設到結尾。round round ...