0

我有以下内容:

hive>show partitions TABLENAME                                                           
pt=2012.07.28.08                                                                         
pt=2012.07.28.09                                                                         
pt=2012.07.28.10                                                                         
pt=2012.07.28.11                                                                         
hive> select pt,count(*) from TABLENAME group by pt;                                     
OK    

为什么无法group by获取数据?

4

3 回答 3

2

检查是否hive.mapred.mode设置为"strict",如果是,则不允许所有分区扫描提交的查询。您可以将其设置为非严格,如下所示:

hive>set hive.mapred.mode=nonstrict;

我不确定这是否导致您的查询没有结果,但试图解决它。一定要分享结果。

注意:您可以在中检查此参数的默认值hive-default.xml

于 2013-11-05T09:52:28.443 回答
1

您始终可以使用 2 个选择语句来实现相同的目标。例如

Create table table1(
session_id string,
page_id string
)
partitioned by (metrics_date string);

考虑我们已经为 2 个分区加载了表

配置单元>显示分区表 1
指标日期 = 2012.07.28.08
指标日期 = 2012.07.28.09

select * from table1 ;

1212121212    google.com     2012.07.28.08 

1212121212    google.com     2012.07.28.09`
获取每个分区的行数
select metrics_date,count(*) from (
select * from table1 ) temp
group by metrics_date;  
于 2014-02-17T17:45:14.417 回答
0

要与 group by 一起获得整个结果,您可以使用以下查询。

SELECT pt,count(*) OVER (PARTITION BY pt) FROM TABLENAME;

这可以通过分区来实现。

于 2016-02-08T10:43:47.333 回答