2017-06-22 97 views
0

以下是數據集我在名爲一個蜂巢表推temp_stat表定義問題阿帕奇HIVE

COUNTRY CITY     TEMP 
---------- -------------------- ----- 
US   Arizona    51.7 
US   California   56.7 
US   Bullhead City  51.1 
India  Jaisalmer   42.4 
Libya  Aziziya    57.8 
Iran  Lut Desert   70.7 
India  Banda    42.4 

當我試圖查看數據雖然選擇命令,然後我得到以下數據集:

US,Arizona,51.7   NULL NULL 
US,California,56.7  NULL NULL 
US,Bullhead City,51.1 NULL NULL 
India,Jaisalmer,42.4 NULL NULL 
Libya,Aziziya,57.8  NULL NULL 
Iran,Lut Desert,70.7 NULL NULL 
India,Banda,42.4  NULL NULL 

接下來,我想這組記錄自卑的國家,每個COUNTR取最高溫度與該城市名稱沿Y,所以我跑下面的查詢:

select country,city,temp 
from (
select country,city,temp, 
    row_number() over (partition by country order by temp desc) as part 
from temp_stat 
) a 
where part = 1 
order by country, city; 

有一次,我跑在蜂巢外殼上面的查詢,我得到以下結果:

US,Arizona,51.7   NULL NULL 
US,California,56.7  NULL NULL 
US,Bullhead City,51.1 NULL NULL 
India,Jaisalmer,42.4 NULL NULL 
Libya,Aziziya,57.8  NULL NULL 
Iran,Lut Desert,70.7 NULL NULL 
India,Banda,42.4  NULL NULL 

即使我跑內部查詢生成row_number然後我也得到類似的行號爲所有記錄。 (像這樣的東西:)

India,Banda,42.4  NULL NULL 1 
India,Jaisalmer,42.4 NULL NULL 1 
Iran,Lut Desert,70.7 NULL NULL 1 
Libya,Aziziya,57.8  NULL NULL 1 
US,Arizona,51.7   NULL NULL 1 
US,Bullhead City,51.1 NULL NULL 1 
US,California,56.7  NULL NULL 1 
enter code here 

我也試過DENSE_RANK()秩()。沒有新的結果。表格定義有什麼問題嗎?

所有幫助將不勝感激!

回答

1

領域的終止 ''


你的表的定義應該是這樣的:

create external table temp_stat 
(
    country  string 
    ,city  string   
    ,temp  decimal(11,1) 
) 
    row format delimited 
    fields terminated by ',' 
; 

select * from temp_stat; 

+---------+---------------+------+ 
| country |  city  | temp | 
+---------+---------------+------+ 
| US  | Arizona  | 51.7 | 
| US  | California | 56.7 | 
| US  | Bullhead City | 51.1 | 
| India | Jaisalmer  | 42.4 | 
| Libya | Aziziya  | 57.8 | 
| Iran | Lut Desert | 70.7 | 
| India | Banda   | 42.4 | 
+---------+---------------+------+ 
+0

是我的查詢是不是給我正確的輸出的原因? – hashir

+0

是的。您的表格未正確定義。整行被映射到第一列,所有其他列都包含空值。 –

+0

謝謝隊友! 桌子真的是問題所在。我跟着你的方法,同樣加載數據,我的查詢運行得很順利。雖然有這個問題。當我運行以下查詢: 從temp_stat中選擇國家,城市,溫度,排名()(按國家/地區排序按 temp desc劃分)排名; – hashir