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: