我正在尝试从Hive表中删除重复记录。
我的Hive表:带有列的'dynpart':Id,Name,Technology
if (str.equals("A") && str.equals("B")) {
alert("A");
alert("B");
}else if( str.equals("C")){
alert("C");
}else...... // other conditions
我们在select查询中使用了'Distinct'这样的选项,但select查询只是从表中检索数据。任何人都可以告诉如何使用删除查询从Hive表中删除重复的行。
确保不建议在Hive中删除/更新记录的标准。但我想学习如何做到这一点。
答案 0 :(得分:20)
您可以使用insert overwrite语句来更新数据
insert overwrite table dynpart select distinct * from dynpart;
答案 1 :(得分:3)
您可以将不同的记录插入到其他表
中create table temp as select distinct * from dynpart
答案 2 :(得分:0)
以防万一,如果您的表在很少或选定的列上有重复的行。假设您具有如下所示的表结构:
id Name Technology
1 Abcd Hadoop
2 Efgh Java --> Duplicate
3 Ijkl Mainframe
2 Efgh Python --> Duplicate
此处的id和Name列具有重复的行。 您可以使用解析函数获取重复行,如下所示:
select * from
(select Id,Name,Technology,
row_Number() over (partition By Id,Name order by id desc) as row_num
from yourtable)tab
where row_num > 1;
这将为您提供输出:
id Name Technology row_num
2 Efgh Python 2
当您需要获得两个重复的行时:
select * from
(select Id,Name,Technology,
count(*) over (partition By Id,Name order by id desc) as duplicate_count
from yourtable)tab
where duplicate_count> 1;
输出为:
id Name Technology duplicate_count
2 Efgh Java 2
2 Efgh Python 2