繁体   English   中英

如何按特定分区对配置单元中的数据进行分组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM