我知道通常的例程:sc.broadcast(x)
。如何在Spark Streaming映射函数中广播变量?
但是,目前Spark Streaming不支持带检查点的广播变量。
官方指南提供了一个解决方案:http://spark.apache.org/docs/latest/streaming-programming-guide.html#accumulators-and-broadcast-variables。但是,此解决方案只能用于foreachRDD函数。
现在我想使用需要以这种方式映射函数(如flatMapToPair
)播出大或不可序列化的变量(如KafkaProducer
),但由于没有明显的RDD变量,我不能检索星火上下文广播懒惰评估变量。如果我使用初始上下文创建DStreams或从DStreams获取的上下文,那么该任务将不可序列化。
那么如何在映射函数中使用广播变量呢?或者有什么解决方法在映射函数中使用大的或不可序列化的变量?