gpt4 book ai didi

java - 我们可以为 FileInputFormat 自定义 InputSplit 大小吗?

转载 作者:可可西里 更新时间:2023-11-01 14:59:27 26 4
gpt4 key购买 nike

让我们考虑一个生成 1000 个 map task 的 MapReduce 作业。区 block 大小:128MB最小拆分大小:1MB最大拆分​​大小:256MB

block 大小似乎是限制值。我们能否将拆分大小增加到 block 大小以上?

这是 FileInputFormat.java 中的函数

protected long computeSplitSize(long goalSize, long minSize, long blockSize) {
return Math.max(minSize, Math.min(goalSize, blockSize));
}

基于上述函数,大于 block 大小的最小拆分大小将执行我想要的操作。有人可以阐明以这种方式设置最小拆分大小的任何副作用吗?

最佳答案

为此,您必须了解 goalSize 指的是总输入大小除以 JobConf.getNumMapTasks()。这个计算意味着:

  • 拆分将不小于文件中的剩余数据或minSize
  • 拆分不会大于 goalSizeblockSize 中的较小者。

鉴于此,您可以理解理想的拆分大小恰好是 1 个 block 大小,因为它允许框架为处理拆分的任务提供数据局部性。 (来源:Pro Hadoop)

如果您想将拆分大小增加到超过 block 大小,这意味着每个映射器都需要进行远程读取以读取非本地数据,因此这可能会降低效率。但除非您试图创建巨大的拆分,否则我怀疑这会对性能产生重大影响。我仍然会建议尽可能保留默认的拆分大小,除非您有一个可靠的用例,这将不起作用。

关于java - 我们可以为 FileInputFormat 自定义 InputSplit 大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com