根据Hadoop - The Definitive Guide
FileInputFormats 定义的逻辑记录通常不适合 HDFS 块。例如,TextInputFormat 的逻辑记录是行,通常会跨越 HDFS 边界。这与您的程序的功能无关——例如,行不会丢失或损坏——但值得了解,因为它确实意味着数据本地映射(即,与它们在同一主机上运行的映射)输入数据)将执行一些远程读取。这导致的轻微开销通常并不显着。
假设一条记录线被分成两个块(b1 和 b2)。处理第一个块 (b1) 的映射器将注意到最后一行没有 EOL 分隔符,并从下一个数据块 (b2) 中获取该行的剩余部分。
处理第二个块(b2)的映射器如何确定第一个记录不完整,应该从块(b2)中的第二个记录开始处理?