Java Hadoop-ClassCastException:LongWriteable不能强制转换为Long
我得到了以下Java Hadoop-ClassCastException:LongWriteable不能强制转换为Long,java,hadoop,Java,Hadoop,我得到了以下ClassCastException,但不确定代码出了什么问题: java.lang.Exception: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to java.lang.Long at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492) at o
ClassCastException
,但不确定代码出了什么问题:
java.lang.Exception: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to java.lang.Long
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:552)
Caused by: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to java.lang.Long
at uk.ac.man.cs.comp38211.exercise.PositionalTFTerm.<init>(BasicInvertedIndex.java:264)
at uk.ac.man.cs.comp38211.exercise.PositionalTFTerm.of(BasicInvertedIndex.java:301)
at uk.ac.man.cs.comp38211.exercise.PositionalTFTerm.merge(BasicInvertedIndex.java:276)
at java.util.stream.Collectors$1OptionalBox.accept(Collectors.java:706)
at java.util.stream.Collectors.lambda$groupingBy$45(Collectors.java:909)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at com.google.common.collect.Streams$2.tryAdvance(Streams.java:366)
at java.util.Spliterator.forEachRemaining(Spliterator.java:326)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at uk.ac.man.cs.comp38211.exercise.BasicInvertedIndex$MyMapper.map(BasicInvertedIndex.java:103)
我可以知道怎么修理吗?谢谢。您正在将
LongWritable
动态对象添加到严格的Long
列表中?但在此之前,是否将此Long
列表初始化为ArrayListWritable
动态列表?还是我遗漏了什么?此positions
列表应包含什么数据类型?很抱歉,命名混乱,positions
是类型为list
的构造函数参数,this.positions
是类型为ArrayListWritable
的实例变量,我已将问题中的图片展开,使其更详细clear@Coursal在构造函数中,我正在尝试将列表
转换为ArrayListWritable
您是否尝试在ArrayListWritable
类中添加一个方法来进行此转换(类似这样的转换)?我不相信这是一个常见的变量命名问题当然,我很感兴趣的是,您正在尝试这样动态地进行转换。@Coursal如果我将其直接存储为列表
,然后只在positiontfterm
类中的write
和readFields
方法中进行转换,那么它可以毫无问题地工作,我想这是目前最好的方法。