[英]How to broadcast a variable in a Spark Streaming mapping function?
我知道通常的例程: sc.broadcast(x)
。
但是,当前Spark Streaming不支持带有检查点的广播变量。
官方指南提供了一种解决方案: http : //spark.apache.org/docs/latest/streaming-programming-guide.html#accumulators-and-broadcast-variables 。 但是,此解决方案只能用于foreachRDD函数。
现在,我想使用需要以这种方式在映射函数(例如flatMapToPair
)中广播的较大或KafkaProducer
序列化的变量(例如flatMapToPair
),但是由于没有可见的RDD变量,因此无法检索Spark上下文来广播延迟-评估的变量。 如果我使用初始上下文创建DStream或从DStream检索的上下文,则该任务无法序列化。
那么如何在映射函数中使用广播变量? 还是在映射函数中使用较大或不可序列化的变量有任何解决方法?
我终于找到了解决方案。 要使用这些功能,请使用转换功能而不是地图功能。 在转换函数中,我们手动处理RDD并在其上应用映射函数,因此我们可以获得RDD的引用,从而从中获取Spark上下文。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.