2013-04-05 35 views
2

我在Elastic Map-Reduce上有一組Hive表,它們有一些重複的元素。是否有簡單的方法來刪除這些表格?有沒有簡單的方法來重複數據刪除Hive表?

想到的是傾倒到一組豬消化文件,引發豬並使用DISTINCT查詢重新生成表格。不過,這似乎有點相當的工作,所以我想知道是否有更簡單的方法。

+0

讓我們假設「元素」是指行。這些重複的行是否重複,或者它們是否與某些列不同?通過刪除表格,你的意思是保留所有的列,而不僅僅是行重複的那些列? – 2016-10-21 14:54:25

回答

2

一個查詢應刪除重複:

INSERT OVERWRITE TABLE table 
SELECT DISTINCT Col1, Col2 , ..., ColN FROM table 
+0

這是一個錯誤的答案。 – Dennis 2016-04-01 10:12:42

+0

我同意 - 如果行不完全重複,但它們不同的列需要返回?我相信其他數據庫允許您爲不同的和選擇指定單獨的一組列。 – 2016-10-21 14:57:11

1

如果你需要重複數據刪除像(客戶,主機,產品,地點),你也可以將其加入自己獨特的列。

很有用,如果你有不同的時間戳或任何其他多個條目。

INSERT OVERWRITE TABLE my_table 
select a.* from my_table a 
inner join (select min(id) as id from my_table group by unique_column) b on (a.id = b.id); 
相關問題