当我在我的job中使用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$2.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的罚单,但我仍然面临着这个问题。请给我一些投入。
发布于 2015-02-26 07:15:44
在这一行
((FileSplit)context.getInputSplit()).getPath().toString();= inputSource
context.getInputSplit()是TaggedInputSplit的实例
并转换为FileSplit。
我检查两个类都没有父子关系。那就破例吧。您可以使用Hadoop获取inputSource。
获取输入源的方法:参数中的JobContext上下文
inputSource=context.getConfiguration().get("mapreduce.input.fileinputformat.inputdir",为空);
如果您无法获得输入源,请提供如何在驱动程序中设置输入文件路径。
https://stackoverflow.com/questions/28627053
复制相似问题