gpt4 book ai didi

java - Hadoop:当我们使用 NLineInputFormat 时,Mappers 是否并行运行?

转载 作者:可可西里 更新时间:2023-11-01 14:45:55 24 4
gpt4 key购买 nike

如果是,HDFS 如何将输入文件拆分为 N 行以供每个映射器读取?

我相信这是不可能的!

当拆分器需要偏移量或字节进行拆分时,可以在不处理整个输入文件的情况下进行拆分。

但是当 '\n' 或换行符的数量很重要时,在拆分之前有必要处理总输入文件(以计算换行符)。

最佳答案

要使 NLineInputFormat 正常工作,每个拆分都需要知道第 x N 行的起始位置。正如您在对 Tariq 的回答的评论中指出的那样,映射器不能只知道第 3 行(香蕉从哪里开始),它会从 map 的 InputSplit 获取此信息。

这实际上是在输入格式的 getSplitsForFile 方法中处理的,它打开每个输入文件,并发现每个第 N 行开始的字节偏移量(并生成一个 InputSplit 由 Map 任务处理)。

正如您所想象的,这对于大型输入文件(或大量输入文件)来说并不能很好地扩展,因为 InputFormat 需要打开并读取每个文件以发现拆分边界。

我自己从未使用过这种输入格式,但我想当您需要为一个较小的输入文件中的每一行执行大量 CPU 密集型工作时,它可能最适合使用 - 因此而不是 1 个映射器完成所有工作一个 100 条记录的文件,您可以跨多个映射器划分负载(比如 10 个映射器上的 10 行)。

关于java - Hadoop:当我们使用 NLineInputFormat 时,Mappers 是否并行运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039603/

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