Hive'de göreceli olarak basit sorgular yapıyorum ve GROUP BY
ve ORDER BY
'u tek bir bildirimde birleştiremiyor gibi görünüyorum. GROUP BY
sorgusunun geçici bir tablosuna seçim yapmak ve sonra ORDER BY
ile bu tabloda bir seçim yapmak sorun yok, ancak bunları birleştiremiyorum.HIVE SELECT GROUP BY ve ORDER BY tarafından birleştirilebilir mi?
Örneğin, ben bir tablo a
var ve bu sorguyu çalıştırabilirsiniz:
SELECT place,count(*),sum(weight) from a group by place;
Ve bu sorguyu çalıştırabilirsiniz:
SELECT place,count(*),sum(weight) from a group by place order by place;
:
create temporary table result (place string,count int,sumweight int);
insert overwrite table result
select place,count(*),sum(weight) from a group by place;
select * from result order by place;
Ama bu sorguyu deneyin
Bu hatayı alıyorum:
Hata: Hata derlenirken beyanı: BAŞARISIZ: ParseException satırı şöyle karakter dizesindeki yakın '_c0' literal (devlet = 42000, kod = 40000)
SORT BY' denedim ve benzer sonuçlar aldım. Aldığınız dökümantasyona göre, “SIRALAMA BY” ile “SİPARİŞ BY” arasındaki tek fark, “SİPARİŞ BY”, toplam siparişi garanti ederken, “SIRALAMA BY”, redüktöre girişi sıralar, bu yüzden tutarlı olmayabilir. toplam sipariş. Bir şey mi eksik? – vy32
Sadece yardım etmeyi deneyin :) ... "Emir" cümlesiyle ilgili bazı sınırlamalar var. Sıkı modda (yani, hive.mapred.mode = sıkı), ... ... Kovan işlemlerinin gerçekleştirildiği mod. Katı modda, bazı riskli sorguların yayınlanmasına izin verilmez. Örneğin, tam tablo taramaları engellenir (bkz. HIVE-10454) ve SİPARİŞ BY sınırlaması gerektirir ... –
Yardımlarınız için minnettarım! LIMIT'in eklenmesi yardımcı olmadı, ama iki SELECT'e ayrılmasına yardımcı oldu. – vy32