我刚刚开始学习mapreduce,有一些问题需要解答。下面是:
1) 案例1:fileinputformat作为输入格式。包含多个要处理的文件的目录是输入路径。如果我有n个文件,所有小于hadoop集群中块大小的文件,那么为map reduce作业计算了多少个拆分?
2) 我在一个名为myfileinputformat的类中扩展fileinputformat,并重写issplitable以始终返回false。输入配置同上。在这种情况下我会得到n次劈开吗?
3) 如果说n个文件中的1个文件略大于集群的块大小,那么在第二种情况下,我会得到n+1个拆分吗?
提前感谢您的帮助!
1条答案
按热度按时间mo49yndu1#
让我们从fileinputformat的基础知识开始
fileinputformat是抽象的,因此不能直接使用它。““公共抽象类fileinputformat”
让我们假设您使用一个像textinputformat(类textinputformat扩展fileinputformat)这样的inputformat并回答您的问题。
fileinputformat中的splitmethod逻辑适用于输入路径中的每个文件,因此在mapreduce作业中有“n”个拆分(case1)。
对于case2,仍然有n个拆分,因为您刚刚通知inputformat不要拆分单个文件。但对于每个文件,将其视为一个分割。
对于第3种情况,由于文件没有被拆分,因此仍然有n个拆分。切记拆分逻辑应用于单个文件,而不是将它们放在一起。
combineinputformat是在拆分逻辑期间要合并输入文件时使用的格式。