我正在使用类似于Airflow的数据管道,并希望执行一项日常任务,即检查新分区是否已放入表中,然后创建一个删除了所有重复记录的新表。
数据集非常大,因此我很难考虑使用高效的HiveQL查询进行重复数据删除。仅在所有列上使用group by肯定太昂贵了。
最佳答案
您可以尝试使用row_number()
:
select t.*
from (select col1, col2, col3, . . .,
row_number() over (partition by col1, col2, . . .
order by col1) as seqnum
from t
) t
where seqnum = 1;
我不确定这比
group by
快多少,但是值得一试。关于sql - 重复数据删除Hive表的有效方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37800422/