【问题标题】:Why does Hive throw me an error while using Order by date?为什么 Hive 在使用按日期排序时会抛出错误?
【发布时间】:2021-07-17 21:46:55
【问题描述】:

我正在尝试在 hive 中编写查询,但我看到以下错误。 "编译语句出错:

FAILED: SemanticException 无法将 Windowing 调用分解为 团体。至少 1 个组必须仅依赖于输入列。还要检查 对于循环依赖。潜在错误:原始类型 DATE 不是 值边界表达式支持。

我在 Oracle sql 中使用了相同的查询,它工作正常。如何在 Hive 中编写有效的订单?

Select   
Email,
FIRST_VALUE(C.abc_cust_id) Over (Partition By Lower(email) Order By C.regt_date
 Desc)As CUSTOMER_ID
from table X

【问题讨论】:

    标签: sql hive hiveql window-functions


    【解决方案1】:

    因为在窗口化之后添加了一些原始类型支持(之前它不是 DATE 类型)并且窗口化未修复。见HIVE-13973

    作为一种解决方法,尝试将 DATE 转换为 STRING:

    Over (Partition By Lower(email) Order By cast(C.regt_date as string) Desc)
    

    【讨论】:

    • 非常感谢!对此,我真的非常感激。我已编辑查询以使用演员表。但是,查询运行速度非常慢。关于如何优化演员阵容的任何建议。再次感谢
    • @Maddy 我相信工作缓慢的不是 CAST。它是 FIRST_VALUE。 1. 检查电子邮件的偏差。您是否有太多行包含相同的电子邮件? 2.尝试增加reducer的并行度stackoverflow.com/a/48487306/2700344
    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 2020-10-19
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    相关资源
    最近更新 更多