hadoop - 如何编写查询以避免在选择不同和大小的 collect_set 配置单元查询中使用单个 reducer?

标签 hadoop hive query-optimization cloudera hiveql

如何重写这些查询以避免在 reduce 阶段使用单个 reducer?它需要永远,我失去了使用它的并行性的好处。

select id
, count(distinct locations) AS unique_locations
  from
  mytable
;

select id
, size(collect_set(locations)) AS unique_locations
  from
  mytable
;

最佳答案

使用两个查询对 count(distinct var) 有效:

SELECT
 count(1)
FROM (
 SELECT DISTINCT locations as unique_locations 
 from my_table
 ) t;

我认为大小 collect_set 也是如此:

SELECT
  size(unique_locations)
FROM (
 SELECT collect_set(locations) as unique_locations 
 from my_table
 ) t;

关于hadoop - 如何编写查询以避免在选择不同和大小的 collect_set 配置单元查询中使用单个 reducer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31217198/

相关文章:

query-optimization - 检索链中作为实例或子实例或子子实例的所有项目

hadoop - presto + 构建将加入现有 hadoop 集群的 presto 集群

hadoop - 如何按多列分组,然后在 Hive 中转置

apache-spark - Hive无法读取Spark生成的分区 Parquet 文件

mysql - 使用 MySQL 按空值分区

sql - SQL DATEDIFF(year, ..., ...) 是一种昂贵的计算吗?

java - Accumulo MapReduce 作业因 java.io.EOFException 而失败,使用 AccumuloRowInputFormat

hadoop - 记录阅读器和记录边界

Hadoop 资源管理

Maven hive-exec 与 protobuf 冲突