我有一个hdfs格式的大文件(~20gb),我通常在这个文件上执行mapreduce作业。创建了大约170个Map器。这个 InputFormat 使用的是 FileInputFormat .现在我只想对文件的一部分(例如,文件的前40mb)执行mapreduce作业。有没有一个简单的方法来实现这一点?谢谢你的帮助。
InputFormat
FileInputFormat
vmdwslir1#
大家好,最后,我找到了一个解决方案,包括推导 FileInputFormat 类并重写 getSplits 方法,以便仅获取与hdfs文件的所需部分相对应的分割。在这个方法中,我调用超类来获取 InputFileFormat 班级。由于作业的配置,我成功地获得了一些信息,比如hdfs文件的开头和我想要读取的hdfs文件的结尾。最后,所有拆分的开始和结束都来自 getSPlits 方法与前面的信息进行比较,如果它们与hdfs文件的所需部分匹配,则返回。
getSplits
InputFileFormat
getSPlits
1条答案
按热度按时间vmdwslir1#
大家好,
最后,我找到了一个解决方案,包括推导
FileInputFormat
类并重写getSplits
方法,以便仅获取与hdfs文件的所需部分相对应的分割。在这个方法中,我调用超类来获取
InputFileFormat
班级。由于作业的配置,我成功地获得了一些信息,比如hdfs文件的开头和我想要读取的hdfs文件的结尾。最后,所有拆分的开始和结束都来自getSPlits
方法与前面的信息进行比较,如果它们与hdfs文件的所需部分匹配,则返回。