使用hadoop进行排序时报错 Error: java.lang.ClassCastException
来源:互联网 发布:淘宝怎么查历史最低价 编辑:程序博客网 时间:2024/05/16 13:03
使用hadoop进行排序时报如下错误:
Error: java.lang.ClassCastException: class cn.itcast.mytest.FlowBean
at java.lang.Class.asSubclass(Class.java:3165)
at org.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:884)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:981)
at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:391)
at org.apache.hadoop.mapred.MapTask.access$100(MapTask.java:80)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:675)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:747)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
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:1556)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
原因:你实现的是Writable和Comparable接口
正确的做法是实现WritableComparable接口
源码分析可知:
public RawComparator getOutputKeyComparator() {
Class<? extends RawComparator> theClass = getClass(
JobContext.KEY_COMPARATOR, null, RawComparator.class);
if (theClass != null)
return ReflectionUtils.newInstance(theClass, this);
return WritableComparator.get(getMapOutputKeyClass().asSubclass(WritableComparable.class));
}
它需要WritableComparable接口
Error: java.lang.ClassCastException: class cn.itcast.mytest.FlowBean
at java.lang.Class.asSubclass(Class.java:3165)
at org.apache.hadoop.mapred.JobConf.getOutputKeyComparator(JobConf.java:884)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:981)
at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:391)
at org.apache.hadoop.mapred.MapTask.access$100(MapTask.java:80)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:675)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:747)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
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:1556)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
原因:你实现的是Writable和Comparable接口
正确的做法是实现WritableComparable接口
源码分析可知:
public RawComparator getOutputKeyComparator() {
Class<? extends RawComparator> theClass = getClass(
JobContext.KEY_COMPARATOR, null, RawComparator.class);
if (theClass != null)
return ReflectionUtils.newInstance(theClass, this);
return WritableComparator.get(getMapOutputKeyClass().asSubclass(WritableComparable.class));
}
它需要WritableComparable接口
0 0
- 使用hadoop进行排序时报错 Error: java.lang.ClassCastException
- ListView在removeFooterView时报java.lang.ClassCastException错问题
- Hibernate保存时报java.lang.ClassCastException
- 使用zinin的RedisSession共享时报java.lang.ClassCastException转换错误的最终解决方案
- 使用lucene4.6进行排序时报错:java.lang.IllegalArgumentException: after must be a FieldDoc; got doc=411 score=1
- 使用JBOSS发生java.lang.ClassCastException
- 关于使用AOP 进行事务代理配置事出现java.lang.ClassCastException: $Proxy0异常
- Hadoop 编译时报java.lang.UnsatisfiedLinkError
- ERROR/AndroidRuntime: Caused by: java.lang.ClassCastException: android.widget.button
- Web项目报错java.lang.ClassCastException
- java.lang.ClassCastException翻译
- java.lang.ClassCastException
- java.lang.ClassCastException问题
- java.lang.ClassCastException
- java.lang.ClassCastException
- java.lang.ClassCastException:
- java.lang.ClassCastException:
- java.lang.ClassCastException: $Proxy1
- API Guide:<action>
- lucene学习
- 3分钟看完凯迪克金奖作品
- 进程间通信和线程间同步区别
- Java程序从mysql读出时间后面多.0
- 使用hadoop进行排序时报错 Error: java.lang.ClassCastException
- 方便你我他的四个开源调查工具
- Android代码混淆之混淆规则
- 浅谈CSRF攻击方式
- css3实现鼠标移到图片上图片缓慢变大
- VMWare虚拟机提示:锁定文件失败,打不开磁盘的解决办法+查看虚拟机安装目录
- servlet和Spring的DispatcherServlet详解
- PAT 1008. Elevator (20)
- springmvc idea 运行 404