[英]how to group by data from hive with specific partition?
我有以下几点:
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
获取数据?
检查hive.mapred.mode
是否设置为"strict"
,如果不允许,则不允许所有分区扫描提交的查询。 您可以将其设置为nonstrict,如下所示:
hive>set hive.mapred.mode=nonstrict;
我不确定这是否导致您的查询没有结果,但尝试解决该问题。 共享结果。
注意:您可以在hive-default.xml
检查此参数的默认值。
您始终可以使用2条select语句达到相同的效果。 对于前
Create table table1(
session_id string,
page_id string
)
partitioned by (metrics_date string);
考虑我们已经为2个分区加载了表
蜂巢>显示分区表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;
要获得整个结果以及分组依据,您可以使用以下查询。
SELECT pt,count(*) OVER (PARTITION BY pt) FROM TABLENAME;
这可以通过划分来实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.