2017-06-22 72 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