Использование версии 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 строки результатов прямо сейчас. Улей, кажется, не может уменьшить последний результат до того, что я ожидал увидеть.
Это ошибка? Кто-нибудь может воспроизвести это? У меня работает 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;
Отредактировано: отредактировано, потому что запрос не соответствовал фактической используемой таблице, что затрудняло предоставление какой-либо помощи...