仅对hdfs文件的一部分执行mapreduce作业

juud5qan  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(409)

我有一个hdfs格式的大文件(~20gb),我通常在这个文件上执行mapreduce作业。创建了大约170个Map器。这个 InputFormat 使用的是 FileInputFormat .
现在我只想对文件的一部分(例如,文件的前40mb)执行mapreduce作业。
有没有一个简单的方法来实现这一点?
谢谢你的帮助。

vmdwslir

vmdwslir1#

​大家好,
最后,我找到了一个解决方案,包括推导 FileInputFormat 类并重写 getSplits 方法,以便仅获取与hdfs文件的所需部分相对应的分割。
在这个方法中,我调用超类来获取 InputFileFormat 班级。由于作业的配置,我成功地获得了一些信息,比如hdfs文件的开头和我想要读取的hdfs文件的结尾。最后,所有拆分的开始和结束都来自 getSPlits 方法与前面的信息进行比较,如果它们与hdfs文件的所需部分匹配,则返回。

相关问题