Hive 中的日期差异小于 15 分钟

Posted

技术标签:

【中文标题】Hive 中的日期差异小于 15 分钟【英文标题】:Date Difference less than 15 minutes in Hive 【发布时间】:2012-07-21 02:45:28 【问题描述】:

以下是我的查询,在最后一行中,我试图查看日期之间的差异是否在 15 分钟内。但是每当我运行以下查询时。

SELECT TT.BUYER_ID , COUNT(*) FROM
(SELECT testingtable1.buyer_id, testingtable1.item_id, testingtable1.created_time from (select user_id, prod_and_ts.product_id as product_id, prod_and_ts.timestamps as timestamps from testingtable2 LATERAL VIEW explode(purchased_item) exploded_table as prod_and_ts where to_date(from_unixtime(cast(prod_and_ts.timestamps as BIGINT))) = '2012-07-09') prod_and_ts RIGHT OUTER JOIN (SELECT buyer_id, item_id, rank(buyer_id), created_time, UNIX_TIMESTAMP(created_time)
FROM (
    SELECT buyer_id, item_id, created_time
    FROM testingtable1
    where to_date(from_unixtime(cast(UNIX_TIMESTAMP(created_time) as int))) = '2012-07-09'
    DISTRIBUTE BY buyer_id
    SORT BY buyer_id, created_time desc
) a
WHERE rank(buyer_id) < 5) testingtable1 ON (testingtable1.item_id = prod_and_ts.product_id AND testingtable1.BUYER_ID = prod_and_ts.USER_ID 
AND abs(datediff(testingtable1.created_time,FROM_UNIXTIME(cast(prod_and_ts.timestamps as BIGINT)))) <= 15) where prod_and_ts.product_id IS NULL ORDER BY testingtable1.buyer_id, testingtable1.created_time desc) TT GROUP BY TT.BUYER_ID;

我总是遇到异常-

FAILED: Error in semantic analysis: line 10:144 Both Left and Right Aliases
Encountered in Join 15

我的查询有什么问题吗?或者在 Hive 中,我们无法以分钟为单位计算日期之间的差异?任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

我认为问题在于您的加入。来自the Hive language manual:

仅支持等式连接、外连接和左半连接 蜂巢。 Hive 不支持不相等的连接条件 条件,因为很难将这样的条件表达为 映射/减少作业。

【讨论】:

以上是关于Hive 中的日期差异小于 15 分钟的主要内容,如果未能解决你的问题,请参考以下文章

如果日期时间索引的差异小于熊猫系列的 5 分钟,则分组

计算 Hive 数组中连续日期之间的差异

以小时和分钟选择两个日期的差异

SQL 按日期时间分组,最大差异为 x 分钟

从日期小于最大日期的 Hive 表中选择

查询中的 Hive DATE 操作