我有一个HDFS(~20Gb)的大文件,我通常在其上执行MapReduce作业。创建了大约170个映射器。使用的InputFormat
是FileInputFormat
。
现在我想只在文件的一部分上执行MapReduce作业(例如,文件的前40Mb)。
有一种简单的方法可以执行此操作吗?
感谢您的帮助。
答案 0 :(得分:0)
大家好,
最后,我找到了一个解决方案,包括派生FileInputFormat
类并覆盖getSplits
方法,以便只获取与HDFS文件所需部分对应的分割。
在这个方法中,我调用超类来获取InputFileFormat
类生成的分裂。由于作业的配置,我设法得到一些信息,如HDFS文件的开头和我想读的HDFS文件的结尾。最后,将来自超类的getSPlits
方法的所有拆分的开始和结束与先前的信息进行比较,并且如果它们与HDFS文件的所需部分匹配则返回。