hadoop - Hive 无法手动设置 reducer 的数量

标签 hadoop mapreduce hive

我有以下配置单元查询:

select count(distinct id) as total from mytable;

自动生成:
1408 映射器
1 reducer

我需要手动设置 reducer 的数量,我尝试了以下方法:

set mapred.reduce.tasks=50 
set hive.exec.reducers.max=50

但这些设置似乎都没有得到遵守。查询需要永远运行。有没有办法手动设置 reducer 或者重写查询以便产生更多的 reducer?谢谢!

最佳答案

像这样在配置单元中编写查询:

 SELECT COUNT(DISTINCT id) ....

将始终只使用一个 reducer 。 你应该:

  1. 使用此命令设置所需的 reducer 数量:

    设置 mapred.reduce.tasks=50

  2. 重写查询如下:

SELECT COUNT(*) FROM ( SELECT DISTINCT id FROM ... ) t;

这将导致 2 个 map+reduce 作业而不是一个,但性能提升将是巨大的。

关于hadoop - Hive 无法手动设置 reducer 的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762064/

相关文章:

hadoop - 在 ubuntu 12.04 LTS 中使用 cloudera manager 安装 Cloudera CDH5

hadoop - 使用零 Reducers 时,我能否从 Hadoop 获得单独排序的 Mapper 输出?

javascript - 合并和聚合具有相同模式 mongodb 的两个或多个集合的某些字段

amazon-web-services - 为什么 AWS EMR 中缺少 hive_staging 文件

c# - 无法在HDInsight的非默认容器中的Hive表上远程运行查询

apache-spark - 什么决定了 Parquet 文件缓冲区的大小

csv - Pig 计数文本消息中字符串的出现次数

mapreduce - Couchbase 延迟和 View

hadoop - Hue内部架构和配置单元查询执行

hadoop - 创建多层 HDFS 文件夹