我的hadoop版本是1.0.3,当我使用多输入时,我得到了这个错误。hadoop MultipleInputs ClassCastException失败
java.lang.ClassCastException: org.apache.hadoop.mapreduce.lib.input.TaggedInputSplit cannot be cast to org.apache.hadoop.mapreduce.lib.input.FileSplit
at org.myorg.textimage$ImageMapper.setup(textimage.java:80)
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:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
我测试了单输入路径,没问题。只有当我使用
MultipleInputs.addInputPath(job, TextInputpath, TextInputFormat.class,
TextMapper.class);
MultipleInputs.addInputPath(job, ImageInputpath,
WholeFileInputFormat.class, ImageMapper.class);
我用Google搜索,发现这个链接https://issues.apache.org/jira/browse/MAPREDUCE-1178其中所说的0.21了这个bug。但是我使用的是1.0.3,这个bug再次回来了。任何人都有同样的问题,或任何人都可以告诉我如何解决它?由于
这里是图像映射的设置代码,第4行发生错误:
protected void setup(Context context) throws IOException,
InterruptedException {
InputSplit split = context.getInputSplit();
Path path = ((FileSplit) split).getPath();
try {
pa = new Text(path.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
你可以发布你的'ImageMapper'类的代码 - 它看起来像你试图在您的设置方法中将输入拆分转换为FileInputSplit。 –
我有一个类似的问题..是否有任何解决方案存在? – sunitha