【问题标题】:how to group by data from hive with specific partition?如何按具有特定分区的配置单元中的数据进行分组?
【发布时间】:2013-10-30 09:18:45
【问题描述】:

我有以下几点:

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 无法获取数据?

【问题讨论】:

  • select count(*) from TABLENAME 的结果是什么?您确定分区中有数据吗?
  • 我猜有数据,否则无法创建分区,对吗?

标签: hive hiveql hadoop-partitioning


【解决方案1】:

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

hive>set hive.mapred.mode=nonstrict;

我不确定这是否导致您的查询没有结果,但我正在尝试解决它。请分享结果。

注意:您可以在hive-default.xml查看该参数的默认值

【讨论】:

  • 谢谢。我设置 hive.mapred.mode =strict 然后触发查询(从表组中选择 pt,count(*) by pt)但我得到了类似 AILED: SemanticException org.apache 的错误。 thrift.transport.TTransportException: java.net.SocketTimeoutException: 读取超时
【解决方案2】:

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

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

假设我们已经加载了 2 个分区的表

hive>显示分区 table1
指标日期=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;  

【讨论】:

    【解决方案3】:

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

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

    这可以通过分区来实现。

    【讨论】:

    • 获取HiveSQLException: Error while compiling statement: FAILED: SemanticException Failed to breakup Windowing invocations into Groups. At least 1 group must only depend on input columns. Also check for circular dependencies.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2023-01-11
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 2018-11-03
    相关资源
    最近更新 更多