首页 > 其他 > 详细

hive 分配map数过少导致任务执行慢

时间:2014-08-24 14:11:33      阅读:914      评论:0      收藏:0      [点我收藏+]

数据表大概150M,但是只有几个字段,导致行数特别多,当使用正则表达式去匹配时执行较慢。

解决思路:增大map数;

//设置reduce数为150,将原表分成150份,map数无法直接设置,因为和输入文件数和文件大小等几个参数决定
set mapred.reduce.tasks = 150;

//在map完成阶段不对文件进行合并,相应还有个mapredfiles,是在整个任务完成后不对输出文件合并,否则无法达到分割150份目的
set hive.merge.mapfiles=false;

设置需要合并的文件最大为1M,就是说当map的输入文件小于1M时才会被合并;以为150M分成150份每个是1M,所以不会被合并,这样就会有150个map了;因为输入文件使用了压缩累:查看hive.input.format参数可知
set mapred.max.split.size=1000000;

将原文件按最后一列随机数列分配到每个reduce;123为随机数的种子生成器

drop table tmp_libc_sso_dislocation_1;
create table tmp_libc_sso_dislocation_1 as
select * from tmp_libc_sso_dislocation
distribute by rand(123);

hive 分配map数过少导致任务执行慢

原文:http://www.cnblogs.com/charlie-badegg/p/3932754.html

(0)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!