无法序列化的结果:使用Spark / Scala读取序列文件时,org.apache.hadoop.io.IntWritable

时间:2018-11-10 14:06:45

标签: apache-spark hadoop serialization sequencefile

从逻辑上读取带有Int和String的序列文件,

然后,如果我这样做:

.pbxproj

这没关系,因为IntWritable转换为String。

如果我这样做:

val sequence_data = sc.sequenceFile("/seq_01/seq-directory/*", classOf[IntWritable], classOf[Text])
                  .map{case (x, y) => (x.toString(), y.toString().split("/")(0), y.toString().split("/")(1))}
                  .collect

然后我立即收到此错误:

val sequence_data = sc.sequenceFile("/seq_01/seq-directory/*", classOf[IntWritable], classOf[Text])
                  .map{case (x, y) => (x, y.toString().split("/")(0), y.toString().split("/")(1))}
                  .collect 

根本原因还不是很清楚-序列化,但是为什么这么困难?我注意到这是另一种类型的序列化方面。另外,它仅在运行时注明。

1 个答案:

答案 0 :(得分:1)

如果目标只是获取一个Integer值,则需要调用可写的get

.map{case (x, y) => (x.get()

然后JVM处理serialization of the Integer object而不是因为it doesn't implement the Serializable interface

不知道如何处理IntWritable

String does implement Serializable