仅在HDFS文件的一部分上执行MapReduce作业

时间:2017-03-27 14:32:33

标签: hadoop mapreduce hdfs

我有一个HDFS(~20Gb)的大文件,我通常在其上执行MapReduce作业。创建了大约170个映射器。使用的InputFormatFileInputFormat

现在我想只在文件的一部分上执行MapReduce作业(例如,文件的前40Mb)。

有一种简单的方法可以执行此操作吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

大家好,

最后,我找到了一个解决方案,包括派生FileInputFormat类并覆盖getSplits方法,以便只获取与HDFS文件所需部分对应的分割。

在这个方法中,我调用超类来获取InputFileFormat类生成的分裂。由于作业的配置,我设法得到一些信息,如HDFS文件的开头和我想读的HDFS文件的结尾。最后,将来自超类的getSPlits方法的所有拆分的开始和结束与先前的信息进行比较,并且如果它们与HDFS文件的所需部分匹配则返回。