Apache Spark:在 GraphX 中保留自定义 class:不可序列化?
Apache Spark: Hold Custom class in GraphX: Not Serializable?
我有一篇文章class
case class Article(articleName:String,
id:Option[Long],
authors: Iterator[Author],
keywords: Iterator[String])
(作者是一个class,拥有4个字符串选项)
我想用它创建一个图表。我创建了一个顶点 RDD 和一个边 RDD
val vertices: RDD[(VertexId, Article)] = articles.map(article => (article.id.get , article))
当我创建图表时:
val graph = Graph(vertices, edges)
我收到以下错误(缩写):
java.io.NotSerializableException: scala.collection.LinearSeqLike$$anon
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
我不确定我是否理解为什么我不能做我正在做的事情?
您的 class 不可序列化,因为其中的 LinearSeqLike
不可序列化。 运行 在 spark 集群节点上的任务必须被序列化才能到达那里。我建议使用 List
或其他一些具体的、可序列化的序列类型,而不是 Iterator
.
我有一篇文章class
case class Article(articleName:String,
id:Option[Long],
authors: Iterator[Author],
keywords: Iterator[String])
(作者是一个class,拥有4个字符串选项)
我想用它创建一个图表。我创建了一个顶点 RDD 和一个边 RDD
val vertices: RDD[(VertexId, Article)] = articles.map(article => (article.id.get , article))
当我创建图表时:
val graph = Graph(vertices, edges)
我收到以下错误(缩写):
java.io.NotSerializableException: scala.collection.LinearSeqLike$$anon
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
我不确定我是否理解为什么我不能做我正在做的事情?
您的 class 不可序列化,因为其中的 LinearSeqLike
不可序列化。 运行 在 spark 集群节点上的任务必须被序列化才能到达那里。我建议使用 List
或其他一些具体的、可序列化的序列类型,而不是 Iterator
.