您当前的位置: 首页 >  hive

梁云亮

暂无认证

  • 1浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Hive调优之 数据倾斜

梁云亮 发布时间:2020-03-02 12:14:02 ,浏览量:1

解决方案:

小文件进行合并

不是map数越多越好。比如:一个任务有很多小文件(远远小于块大小128m),则每个小文件也会被当做一个块,用一个map任务来完成,而一个map任务启动和初始化的时间远远大于业务处理的时间,就会造成很大的资源浪费。而且,同时可执行的map数是受限的。

系统默认的格式CombineHiveInputFormat具有对小文件进行合并的功能。 hive-site.xml:


  hive.input.format
  org.apache.hadoop.hive.ql.io.CombineHiveInputFormat

在map执行前合并小文件,减少map数:

set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
复杂文件增加Map数

比如有一个127m的文件,正常会用一个map去完成,但这个文件只有一个或者两个小字段,却有几千万的记录,如果map处理的逻辑比较复杂,用一个map任务去做,肯定也比较耗时。 当input的文件都很大,任务逻辑复杂,map执行非常慢的时候,可以考虑增加Map数,来使得每个map处理的数据量减少,从而提高任务的执行效率。 通过设置最大切片值来改变map数。 在这里插入图片描述

合理设置Reduce数

reduce个数默认是-1,可以在hadoop的mapred-default.xml文件中,设置每个job的Reduce个数。

set mapreduce.job.reduces = 15;
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0432s