mag*_*alo 25 hadoop hive mapreduce
我有以下配置单元查询:
select count(distinct id) as total from mytable;
Run Code Online (Sandbox Code Playgroud)
自动生成:
1408 Mappers
1 Reducer
我需要手动设置reducer的数量,我尝试了以下内容:
set mapred.reduce.tasks=50
set hive.exec.reducers.max=50
Run Code Online (Sandbox Code Playgroud)
但这些设置似乎都没有得到尊重.该查询需要永远运行.有没有办法手动设置Reducer或重写查询,以便它可以导致更多的reducers?谢谢!
wlk*_*wlk 43
在hive中编写查询,如下所示:
SELECT COUNT(DISTINCT id) ....
Run Code Online (Sandbox Code Playgroud)
总是会导致只使用一个减速机.你应该:
使用此命令设置所需的Reducer数量:
设置mapred.reduce.tasks = 50
重写查询如下:
SELECT COUNT(*)FROM(SELECT DISTINCT id FROM ...)t;
这将导致2个map + reduce作业而不是1个,但性能提升将是巨大的.
use*_*742 10
Reducer的数量还取决于输入文件的大小
默认情况下,它是1GB(1000000000字节).您可以通过设置属性hive.exec.reducers.bytes.per.reducer来更改它:
要么通过改变hive-site.xml
<property>
<name>hive.exec.reducers.bytes.per.reducer</name>
<value>1000000</value>
</property>
Run Code Online (Sandbox Code Playgroud)或使用集合
$ hive -e "set hive.exec.reducers.bytes.per.reducer=1000000"
| 归档时间: |
|
| 查看次数: |
40552 次 |
| 最近记录: |