【发布时间】:2015-05-30 02:13:51
【问题描述】:
我们都知道,如果输入文件很大,它会被分割成相等大小的分割(默认大小为 64 MB)。假设我有一个 104 MB 大的 .txt 文件。理论上,这个文件被分成 2 个部分(一个是 64 MB 大,另一个是 40 MB 大)。分裂可能发生在单词的中间吗?例如,“Hadoop”,“Ha”将是第一次拆分的结束,“doop”将是第二次拆分的开始。如果发生这种情况,我们如何才能正确执行 WordCount 问题?
【问题讨论】:
我们都知道,如果输入文件很大,它会被分割成相等大小的分割(默认大小为 64 MB)。假设我有一个 104 MB 大的 .txt 文件。理论上,这个文件被分成 2 个部分(一个是 64 MB 大,另一个是 40 MB 大)。分裂可能发生在单词的中间吗?例如,“Hadoop”,“Ha”将是第一次拆分的结束,“doop”将是第二次拆分的开始。如果发生这种情况,我们如何才能正确执行 WordCount 问题?
【问题讨论】:
该逻辑封装在为映射器配置的 InputFormat 中。 InputFormat 有不同的子类,您可以选择特定于使用 Mapper 使用的文件类型的子类。例如,TextInputFormat 类在换行符上换行。在拆分的开头或结尾可能有部分行,但逻辑会识别这些情况并仍然将完整的行返回给一个映射器。
【讨论】: