我只是通过spark读取hdfs的数据。它抛出 ClassCastException
在6号线。我从来没用过 LongWritable
在我的代码中,不知道数据的格式是什么,我将tuple2对象声明为tuple2,因此tuple2.\u 2()应该是byteswriteable,但在运行时返回longwriteable,因此在尝试访问getbytes()时抛出classcastexception。这段代码没有抛出任何complie时间错误。我的问题是,当我将tuple2.\u 2()声明为bytewriteable时,它如何返回longwriteable。
注意:我没有使用mapreduce概念,也没有显式地创建工作。所以我不能用 job.setMapOutputKeyClass
以及 job.setMapOutputValueClass
.
JavaPairRDD<IntWritable, BytesWritable> hdfsContent = sparkContext.sequenceFile(hdfsPath, IntWritable.class, BytesWritable.class);
JavaRDD<FileData> lines = hdfsContent.map(new Function<Tuple2<IntWritable, BytesWritable>, FileData>()
{
public FileData call(Tuple2<IntWritable, BytesWritable> tuple2) throws InvalidProtocolBufferException
{
byte[] bytes = tuple2._2().getBytes();
return FileData.parseFrom(bytes);
}
});
暂无答案!
目前还没有任何答案,快来回答吧!