【问题标题】:How to get the second last partition in hive (HQL)如何获取配置单元中的倒数第二个分区(HQL)
【发布时间】:2016-07-21 18:32:53
【问题描述】:

我有一个带有以下分区的配置单元表:

part_date='07-12-2016'

part_date='04-12-2016'

part_date='01-12-2016'

现在我怎样才能获得第一个小于 hive 查询中最新分区的分区。假设分区值是数据被摄取到表中的日期。 在这种情况下,它应该是 part_date='04-12-2016'。

所以查询应该是这样的:

select part_date from table_A where part_date > second_last_partition(ie 04-12-2016);

提前致谢

【问题讨论】:

    标签: sql hadoop hive apache-pig


    【解决方案1】:

    您可以使用row_number 窗口函数并获取第二个最新的行。

    select part_date
    from (select part_date,row_number() over(order by part_date desc) as rn 
          from table_A) t
    where rn = 2
    

    我假设 part_date 列是不同的。如果没有,您应该使用dense_rank 函数。

    【讨论】:

    • 您好,感谢您的回答,但我正在尝试获取倒数第二个分区值,而不是分区中的全部数据。我可以编辑问题。
    • 感谢这项工作。但是对于 hdfs 中的零字节文件,我无法获取查询 wok。由于 hive 读取 0 字节文件并没有找到分区的值。是否有任何解决方法?
    • 不幸的是我不知道答案。
    • 那么您已经添加了分区,但没有该分区的数据并且想要获取该分区(倒数第二个)?
    • 是的,正确。似乎无法使用 hive 实现
    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2017-02-11
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    相关资源
    最近更新 更多