gpt4 book ai didi

hadoop - Hive在分区表上的分组依据给出重复的结果行

转载 作者:行者123 更新时间:2023-12-02 20:09:10 26 4
gpt4 key购买 nike

使用版本0.11.0。尝试执行此查询时得到错误的结果

select t1.symbol, max(t1.maxts - t1.orderts) as diff from 
(select catid, symbol, max(cast(timestamp as double)*1000) as maxts, min(cast(timestamp as double)*1000) as orderts, count(*) as cnt
from cat where recordtype in (0,1) and customerid=srcrepid group by symbol, catid) t1
where t1.cnt > 1
group by t1.symbol;

如您所见,有一个带有group by语句的子查询。此子查询计算每个MYID和SYMBOL的时间戳值的最大值和最小值。

现在,我有24个符号。在外部查询中,我想找到每个SYMBOL的最大差,因此我按SYMBOL分组。

问题在于,此刻现在返回864个结果行。 Hive似乎无法将最后的结果减少到我希望看到的结果中。

这是一个错误吗?有人可以复制吗?我有6个节点,每个节点有4个符号。

使用的表:
create table cat(CATID bigint, CUSTOMERID int, FILLPRICE double, FILLSIZE int, INSTRUMENTTYPE int, ORDERACTION int, ORDERSTATUS int, ORDERTYPE int, ORDID string, PRICE double, RECORDTYPE int, SIZE int, SRCORDID string, SRCREPID int, TIMESTAMP timestamp) PARTITIONED BY (SYMBOL string, REPID int) row format delimited fields terminated by ',' stored as ORC;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=1000;
hive.exec.max.dynamic.partitions.pernode=1000;

已编辑:已编辑,因为查询与所使用的实际表不一致,因此难以提供任何帮助...

最佳答案

正如Yin在配置单元mail list上解释的那样,这是与此bug相关的错误。

当Hive仅使用单个mapreduce作业时,将使用两个分区列,而我的查询仅希望按符号分组。

显然,此错误已在树干中修复。

这是另一个bug report,可以更清楚地说明问题

关于hadoop - Hive在分区表上的分组依据给出重复的结果行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18812390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com