码迷,mamicode.com
首页 > 其他好文 > 详细

设置MapReduce的Split大小

时间:2015-05-28 12:20:13      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

因为我们的应用中处理的记录都是固定长度的,就是说所有数据都是由固定长度的记录构成的。这里用recordSize表示一个记录的大小,记录在处理处理过程中要保持完整性,所以在设置Split大小时,开始的实现代码为:

int blockSize = Integer.parseInt(args[0]); //args[0]为输入参数,表示用户希望设置的Split大小

int splitSize = blockSize / recordSize * recordSize;

conf.setLong("mapred.max.split.size",splitSize);

后来发现这样做是有问题的。因为splitSize的计算公式未:

splitSize=max(minSize,min(maxSize,blockSize))

其中blockSize为文件块大小。正确的做法如下:

int blockSize = Integer.parseInt(args[0]); //args[0]为输入参数,表示用户希望设置的Split大小

int splitSize = blockSize / recordSize * recordSize;

conf.setLong("mapred.max.split.size",splitSize);
conf.setLong("mapred.min.split.size",splitSize);

  

设置MapReduce的Split大小

标签:

原文地址:http://www.cnblogs.com/hipercomer/p/4535455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!