映射器是否同时处理多个文件,或者映射器一次只能处理一个文件?我想知道默认行为
- 典型的MapReduce作业遵循每个映射器的一个输入拆分。
- 如果文件大小大于拆分大小(即,它具有更多比一个输入拆分),然后每个文件是多个映射器。
- 如果文件不像
Gzip
分开,则每个映射器是一个文件文件或该过程是Distcp
,其中文件是粒度最佳级别。
如果转到fileInputformat的定义,您会在顶部看到它具有三个方法:
AddInputPath(JobConf Conf,Path Path) - 在MAP -REDUCE作业的输入列表中添加路径。因此,它将在目录中拾取所有文件,但不是单个文件,正如您所说的那样
addInputPathRecursivery(列表结果,文件系统FS,路径,路径,pathFilter Inputfilter) - 在输入路径中递归中添加文件。
>addInputPath(JobConf Conf,字符串commaseparatedpaths) - 将给定的逗号分隔路径添加到MAP -REDUCE作业的输入列表
操作这三种方法,您可以轻松设置所需的任何多个输入。然后,您的输入图的输入点开始将这些数据拼写在映射器作业之间。MAP-REDUCE框架依赖于作业的输入Formats:
验证作业的输入规范。
将输入文件拆分为逻辑输入点,然后将每个输入文件分配给单个映射器。
提供了录音程序的实现,用于从逻辑输入程序中收集输入记录,以通过映射器处理。
因此,从技术上讲,单个映射器将仅处理自己的部分,该部分可以包含来自几个文件的数据。但是对于每种特定格式,您应该研究输入点,以了解如何分发数据。