Hive优化--并行度

Hive的计算任务由MapReduce完成,故并行度的调整需要分为Map端和Reduce端。

Map端并行度

Map端的并行度,也就是Map的个数。

是由输入文件的切片数决定的。一般情况下,Map端的并行度无需手动调整。

但是也会有特殊情况

小文件过多

按照Hadoop默认的切片策略,一个小文件会单独启动一个map task负责计算。

若查询的表中存在大量小文件,则会启动大量map task,造成计算资源的浪费。

这种情况下,可以使用Hive提供的CombineHiveInputFormat,多个小文件合并为一个切片,从而控制map task个数。

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

map端有复杂的查询逻辑

若SQL语句中有正则替换、json解析等复杂耗时的查询逻辑时,map端的计算会相对慢一些。

若想加快计算速度,在计算资源充足的情况下,可考虑增大map端的并行度,令map task多一些,每个map task计算的数据少一些。

--一个切片的最大值
set mapreduce.input.fileinputformat.split.maxsize=256000000;

Reduce端并行度

Reduce端的并行度,也就是Reduce个数

可由用户自己指定,也可由Hive自行根据该MR Job输入的文件大小进行估算

--指定Reduce端并行度,默认值为-1,表示用户未指定
set mapreduce.job.reduces;
--Reduce端并行度最大值
set hive.exec.reducers.max;
--单个Reduce Task计算的数据量,用于估算Reduce并行度
set hive.exec.reducers.bytes.per.reducer;

若指定参数mapreduce.job.reduces的值为一个非负整数,则Reduce并行度为指定值。

否则,Hive自行估算Reduce并行度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值