我正在尝试使用以下代码在Hadoop映射器中获取文件名:

FileSplit fileSplit = (FileSplit) context.getInputSplit();
String filename = fileSplit.getPath().getName();

我导入的库是:
import org.apache.hadoop.mapred.FileSplit;

我得到异常(exception):
org.apache.hadoop.mapreduce.lib.input.FileSplit cannot be cast to org.apache.hadoop.mapred.FileSplit

有人可以帮忙吗?

最佳答案

很好,就在这里-您的导入行是错误的,因为使用org.apache.hadoop.mapreduce.lib.input.FileSplit返回InputSplit实现

为什么不导入org.apache.hadoop.mapreduce.lib.input.FileSplit?两种实现都满足InputSplit的约定,因此它应该是无缝的,除非某些其他方法类明确要求特定的FileSplit实现。

10-05 21:11