Sql 如何从外部分区表中删除配置单元中的重复记录?

Sql 如何从外部分区表中删除配置单元中的重复记录?,sql,hive,Sql,Hive,我有一个配置单元表,它被分区并创建为外部表。我在蜂箱里有一些重复的记录。那么如何删除呢 分区键:创建日期 Col1 Date_created ---- ------------ A Jan B Jan A Jan 我需要输出为 Col1 Date_created ---- ------------ A Jan B Jan 选择不同的行并像这样覆盖当前表 insert overwrite table tbl select dis

我有一个配置单元表,它被分区并创建为外部表。我在蜂箱里有一些重复的记录。那么如何删除呢

分区键:创建日期

Col1  Date_created  
----  ------------

A     Jan

B     Jan

A     Jan
我需要输出为

Col1  Date_created  
----  ------------

A     Jan

B     Jan

选择不同的行并像这样覆盖当前表

insert overwrite table tbl select distinct * from tbl;

使用insert overwrite+distinct:

set hive.exec.dynamic.partition.mode=nonstrict;

insert overwrite table table_name partition (date_created) 
select distinct * from table_name ;

谢谢,这很有效。但你知道我们为什么要这么做吗?设置hive.exec.dynamic.partition.mode=nonstrict@如果我们想防止动态分区插入,dileeprdomic就是用户可能会意外地将所有分区指定为动态分区,而不指定一个静态分区。hive.exec.dynamic.partition.mode=严格防止出现全动态分区的情况。请看这里:nonstrict意味着对动态分区没有限制。