Menggunakan rilis 0.11.0. Saya mendapatkan hasil yang salah ketika mencoba menjalankan kueri ini
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;
Seperti yang Anda lihat, ada subkueri dengan pernyataan grup demi. Subquery ini menghitung nilai stempel waktu maksimum dan minimum per MYID dan SYMBOL.
Sekarang, saya memiliki 24 simbol. Di kueri luar, saya ingin mencari perbedaan maksimal per SIMBOL jadi saya mengelompokkannya berdasarkan SIMBOL.
Masalahnya adalah ini mengembalikan 864 baris hasil saat ini. Hive tampaknya gagal mengurangi hasil terakhir menjadi apa yang saya harapkan.
Apakah ini bug? Adakah yang bisa mereproduksi ini? Saya memiliki 6 node yang berjalan dengan 4 simbol per node.
Tabel yang digunakan:
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;
Diedit: Diedit karena kueri tidak konsisten dengan tabel sebenarnya yang digunakan, sehingga sulit untuk memberikan bantuan apa pun...