Java 我们可以自定义FileInputFormat的InputSplit大小吗 让我们考虑一个MapReduce作业,生成1000个地图任务。 块大小:128MB 最小分割大小:1MB 最大分割大小:256MB
块大小似乎是限制值。我们可以将分割大小增加到块大小之外吗 这是FileInputFormat.java中的函数Java 我们可以自定义FileInputFormat的InputSplit大小吗 让我们考虑一个MapReduce作业,生成1000个地图任务。 块大小:128MB 最小分割大小:1MB 最大分割大小:256MB,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,块大小似乎是限制值。我们可以将分割大小增加到块大小之外吗 这是FileInputFormat.java中的函数 protected long computeSplitSize(long goalSize, long minSize, long blockSize) { return Math.max(minSize, Math.min(goalSize, blockSize)); } 基于上述函数,大于块大小的最小分割大小将满足我的要求。有人能解释一下这样设置最小分割大小的任何副作用吗
protected long computeSplitSize(long goalSize, long minSize, long blockSize) {
return Math.max(minSize, Math.min(goalSize, blockSize));
}
基于上述函数,大于块大小的最小分割大小将满足我的要求。有人能解释一下这样设置最小分割大小的任何副作用吗?为此,您必须了解
goalSize
是指总输入大小除以JobConf.getNumMapTasks()
。这个计算意味着:
- 拆分将不小于文件中的剩余数据或
minSize
- 拆分将不大于
和goalSize
中的较小值blockSize
如果要将分割大小增加到块大小之外,这意味着每个映射器都需要进行远程读取以读取非本地数据,因此这可能会降低效率。但除非您试图创建巨大的拆分,否则我怀疑这将对性能产生关键影响。我仍然建议尽可能保持默认拆分大小,除非您有一个可靠的用例,该用例不起作用。“拆分将不小于文件中的剩余数据或minSize。”什么是“文件中的剩余数据”?还有mapred.max.split.size的用途是什么