Hadoop 如何在不丢失数据完整性的情况下拆分文件?

How does Hadoop split files without losing data integrity?

我们都知道,如果输入文件很大,它会被分成大小相等的部分(默认大小为 64 MB)。假设我有一个 104 MB 大的 .txt 文件。理论上,这个文件被分成 2 个部分(一个 64 MB 大,另一个 40 MB 大)。拆分是否可能发生在单词的中间?例如,"Hadoop"、"Ha" 将是第一次拆分的结束,而 "doop" 将是第二次拆分的开始。如果发生这种情况,我们如何正确执行 WordCount 问题?

该逻辑封装在为映射器配置的 InputFormat 中。 InputFormat 有不同的 subclasses,您可以选择特定于您使用 Mapper 使用的文件类型的 subclass。例如,TextInputFormat class 在换行时换行。拆分的开头或结尾可能有部分行,但逻辑会识别这些情况并且仍然 returns 完整的行到一个映射器。