classcastexception:longwritable不能转换为byteswritable

bfrts1fy  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(200)

我只是通过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);
            }
        });

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题