sql - 重复删除 Hive 表的有效方法?

标签 sql hadoop hive hdfs hiveql

我正在使用类似于 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/

相关文章:

sql - 具有多个记录的 Rails 复杂查询设置

java - 在PIG程序中找不到类DistributedFileSytem

shell - 如何使用 Cronjob 查看 shell 脚本执行

java - Hive UA解析器UDF提供IOException

oracle - PrestoDB 可以连接Oracle 等关系型数据库吗?

mysql - 无法删除配置单元表

c# - 如何向/从 SQL Server 存储过程发送和接收参数

mysql - 列包含来自其他表列的值

sql - 是否可以执行从不同列中选择两个最大值/最小值的单个 SQL 查询?

apache - Sqoop - 无法找到或加载主类 org.apache.sqoop.Sqoop