无法从 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);
如果无法获取输入源,请提供如何在驱动程序中设置输入文件路径
当我在我的 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);
如果无法获取输入源,请提供如何在驱动程序中设置输入文件路径