【问题标题】:Spark-Can not access first element in an JavaRDD using first()Spark-无法使用 first() 访问 JavaRDD 中的第一个元素
【发布时间】:2014-12-12 19:41:52
【问题描述】:

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

JavaRDD<CustomizedDataStructure> myRDD;

当我这样做时:

myRDD.count();

它向我返回值,表明它确实包含数据,而不是null RDD。 但是在运行时:

myRDD.first();

它应该给我一个&lt;CustomizedDataStructure&gt;,但它给出了这样的错误:

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

为什么不是serializable

【问题讨论】:

  • 嗯,CustomizedDataStructure 是可序列化的吗?
  • 你应该回答这个问题。因为是这样的^^

标签: java apache-spark rdd


【解决方案1】:

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

【讨论】:

  • 这就是问题所在。 Scala.Serializablejava.io.Serializable 有区别吗?
  • 您需要java.io.Serializablescala.Serializable 也可以,因为它是一个子类型。
猜你喜欢
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
相关资源
最近更新 更多