无法从 TaggedInputSplit 转换为 MR 2.3 中的 FileSplit

Not able to cast from TaggedInputSplit to FileSplit in MR 2.3

当我在我的 MR 作业中使用 MultipleInput 时,我遇到了这个类广播异常。

Error: java.lang.ClassCastException: org.apache.hadoop.mapreduce.lib.input.TaggedInputSplit cannot be cast to org.apache.hadoop.mapreduce.lib.input.FileSplit
    at com.capitalone.integratekeys.mapreduce.mapper.IntegrationKeysMapperInput.setup(IntegrationKeysMapperInput.java:74)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142)
    at org.apache.hadoop.mapreduce.lib.input.DelegatingMapper.run(DelegatingMapper.java:55)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:784)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.YarnChild.run(YarnChild.java:168)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)

inputSource = ((FileSplit)context.getInputSplit()).getPath().toString();

尽管我在 JIRA 中找到了一张关于它的票据,上面写着 solved.But 我仍然面临这个问题。请给我一些意见。

在这一行

inputSource = ((FileSplit)context.getInputSplit()).getPath().toString();

context.getInputSplit() 是 TaggedInputSplit 的实例

并转换为 FileSplit。

我检查 class 都没有父子关系。 所以得到例外。 您可以使用 Hadoop conf 获取 inputSource。

输入源获取方式: 参数中的 JobContext 上下文

inputSource=context.getConfiguration().get("mapreduce.input.fileinputformat.inputdir", null);

如果无法获取输入源,请提供如何在驱动程序中设置输入文件路径