Spark无法使用first()访问JavaRDD中的第一个元素

Spark无法使用first()访问JavaRDD中的第一个元素,java,apache-spark,rdd,Java,Apache Spark,Rdd,使用spark及其JavaAPI。我已将数据加载到JavaRDD中,如下所示: JavaRDD<CustomizedDataStructure> myRDD; 它向我返回值,表明它确实包含数据,而不是nullRDD。 但在跑步时: myRDD.first(); 它应该返回一个,但它会给出这样的错误: 14:30:39,782 ERROR [TaskSetManager] Task 0.0 in stage 0.0 (TID 0) had a not serializable re

使用
spark
及其
Java
API。我已将数据加载到
JavaRDD
中,如下所示:

JavaRDD<CustomizedDataStructure> myRDD;
它向我返回值,表明它确实包含数据,而不是
null
RDD。 但在跑步时:

myRDD.first();
它应该返回一个
,但它会给出这样的错误:

14:30:39,782 ERROR [TaskSetManager] Task 0.0 in stage 0.0 (TID 0) had a not serializable result:

为什么它不可序列化?

当调用
first()
时,会导致RDD的第一个元素被复制到驱动程序进程。为此,它必须是可序列化的,默认情况下这意味着实现
java.io.serializable
。我猜这个自定义类没有。

那么,自定义数据结构是可序列化的吗?您应该回答这个问题。因为这就是问题所在。
Scala.Serializable
java.io.Serializable
之间有什么不同吗?您需要
java.io.Serializable
scala.Serializable
也可以,因为它是一个子类型。
14:30:39,782 ERROR [TaskSetManager] Task 0.0 in stage 0.0 (TID 0) had a not serializable result: