我需要基于来自Kafka的处理数据,使用GraphX构建一个图。然而,似乎sc.parallelize()
引发错误java.io.NotSerializableException: org.apache.spark.SparkContext
为什么DStream.foreachRDD使用java.io.NotSerializableException失败:org.apache.spark.SparkContext?
......
val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](
ssc, kafkaParams, topicsSet)
val lines = messages.map(_._2)
lines.foreachRDD(rdd => {
rdd.foreachPartition(partition => {
......
// Build a graph
val vertRDD = sc.parallelize(vertices)
val edgeRDD = sc.parallelize(edge)
val graph = Graph(vertRDD, edgeRDD, defaultUser)
}
})
})
以何种方式,我应该解决什么问题?
您不能在RDD内部创建RDD。在这个网站上已经问过很多次了。 – eliasah
你正在尝试在'RDD' 里面存储你的'RDD',这是不可能的 - 所有'RDD's必须在驱动程序中才能提供更完整的代码示例? – lev
谢谢。我已经移动了'foreachRDD'外的'sc.parallelize()',并解决了这个问题。 – bila