0
我有一篇文章類Apache Spark:保留GraphX中的自定義類:不可序列化?
case class Article(articleName:String,
id:Option[Long],
authors: Iterator[Author],
keywords: Iterator[String])
(作者是擁有4個選項字符串類)
,我想創建一個圖形出來。我創建了頂點的RDD和邊緣
val vertices: RDD[(VertexId, Article)] = articles.map(article => (article.id.get , article))
的RDD當我創建我的圖表:
val graph = Graph(vertices, edges)
我得到以下錯誤(縮短):
java.io.NotSerializableException: scala.collection.LinearSeqLike$$anon$1
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
我不知道我明白爲什麼我不能做我正在做的事情?
如果我使用一個列表,似乎在我的代碼,我失去了所有的美好能力我用它來構建我的圖形,如地圖,過濾器等,我會考慮的解決方法... – Stephane
您可以構建就像你現在所做的那樣''Iterator',並且最後只做一個'toList'。 (也就是說,我不太清楚你的投訴是什麼,因爲'List'支持'map','filter'等等)。你需要一個固定的值來發送整個集羣,而不是一些懶惰的按需計算的'Iterator',因爲有希望的原因很明顯。 (如果'authors'和'keywords'是非常大的集合,你可以把它們變成'RDD's然後'zip'或'product'或'join'與你的其他RDDs),而不是試圖將它們包含進去一個案例類。 – lmm