2016-03-26 26 views
0

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)

cevap

0

kullanım sort by '\ bekliyor' 01:45 eşleşmeyen girdi':

SELECT place,count(*),sum(weight) from a group by place sort by place; 
+0

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

+0

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 ... –

+0

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