我有以下内容:
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
无法获取数据?
答案 0 :(得分:2)
检查hive.mapred.mode
是否设置为"strict"
,如果是,则不允许所有分区扫描提交的查询。您可以将其设置为非严格,如下所示:
hive>set hive.mapred.mode=nonstrict;
我不确定这是否会导致您的查询产生任何结果,而是试图解决它。分享结果。
注意:您可以在hive-default.xml
答案 1 :(得分:1)
您总是可以使用2个select语句来实现相同的目标。对于前
Create table table1(
session_id string,
page_id string
)
partitioned by (metrics_date string);
考虑我们已经加载了2个分区的表
hive>显示分区表1 metrics_date = 2012.07.28.08
metrics_date = 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;
答案 2 :(得分:0)
要获得整个结果以及分组依据,您可以使用以下查询。
SELECT pt,count(*) OVER (PARTITION BY pt) FROM TABLENAME;
这可以通过分区来实现。