hadoop中每个mapper有一个或多个文件?

e7arh2l6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(523)

一个Map器是同时处理多个文件还是一个Map器一次只能处理一个文件?我想知道默认行为

jfgube3f

jfgube3f1#

如果您转到fileinputformat的定义,您将看到它的顶部有三种方法:
addinputpath(jobconf conf,path path)-将路径添加到map reduce作业的输入列表中。因此,它将拾取目录中的所有文件,而不是您所说的单个文件
addinputpathrecursively(列出结果、文件系统fs、路径路径、路径过滤器inputfilter)-将输入路径中的文件递归地添加到结果中。
addinputpaths(jobconf conf,string commaseparatedpaths)-将给定的以逗号分隔的路径添加到map reduce作业的输入列表中
操作这三种方法,你可以很容易地设置任何多个输入你想要的。然后,inputformat的inputsplits开始在Map程序作业中拆分这些数据。map reduce框架依赖于作业的inputformat来:
验证作业的输入规范。
将输入文件拆分为逻辑InputSplit,然后将每个逻辑InputSplit分配给一个单独的Map器。
提供recordreader实现,用于从逻辑inputsplit中收集输入记录以供Map程序处理。
所以从技术上讲,单个Map器将只处理自己的部分,其中可以包含来自多个文件的数据。但是对于每种特定的格式,您应该查看inputsplit,以了解数据将如何通过Map器分布。

brtdzjyr

brtdzjyr2#

默认情况下,典型的mapreduce作业遵循每个mapper一个输入分割。
如果文件大小大于分割大小(即有多个输入分割),则每个文件有多个Map器。
如果文件不是可拆分的,则它是每个Map器一个文件 Gzip 文件或进程是否 Distcp 其中文件是最精细的粒度级别。

相关问题