0

我刚刚开始学习 Mapreduce 并且有一些我想回答的问题。开始:

1)案例1:FileInputFormat作为输入格式。具有多个要处理的文件的目录是输入路径。如果我有 n 个文件,所有文件小于 hadoop 集群中的块大小,为 map reduce Job 计算多少拆分?

2) 我在一个名为 MyFileInputFormat 的类中扩展 FileInputFormat,并重写 isSplitable 以始终返回 false。输入配置同上。在这种情况下我会得到 n 次拆分吗?

3)如果说n个文件中的1个文件略大于集群的块大小,我会在第二种情况下得到n+1个分割吗?

在此先感谢您的帮助!

4

1 回答 1

0

让我们从 FileInputFormat 的基础开始

  1. FileInputFormat 是 Abstract 因此您不能直接使用它。“公共抽象类 FileInputFormat”

  2. 假设您使用像 TextInputFormat 之类的 InputFormat(TextInputFormat 类扩展 FileInputFormat)并回答您的问题。

  3. FileInputFormat 中的 splitMethod 逻辑适用于输入路径中的每个文件,因此您将在 MapReduce 作业中进行“N”个拆分(案例 1)。

  4. 对于 Case2,您仍然有 N splits ,因为您刚刚通知 inputformat 不要拆分单个文件。但是对于每个文件,将其视为一个拆分。

  5. 对于案例 3,您仍然会有 N 个拆分,因为文件没有被拆分。请记住,拆分逻辑应用于单个文件,而不是一起考虑。

  6. 如果您想在拆分逻辑期间合并输入文件,则使用 CombineInputFormat。

于 2017-11-17T08:14:50.787 回答