广播变量(Broadcast Variables)

广播变量允许程序员将一个只读变量缓存在每台机器上,而不需要再在任务之间传递。广播变量可被用于有效地给每个节点一个大输入数据集的副本。Spark还尝试使用高效地广播算法来分发变量,进而减少通信的开销。

 

Spark动作通过一组阶段执行,由分布式“shuffle”操作分隔。 Spark自动广播每个阶段中任务所需的公共数据。以这种方式广播的数据以串行形式缓存,并在运行每个任务之前反序列化。这意味着显式创建广播变量仅在跨多个阶段的任务需要相同的数据或以反序列化形式缓存数据很重要时才有用。

通过调用SparkContext.broadcast(v)从变量v创建广播变量。广播变量是v的一个包装,它的值可以通过调用value方法访问。例子如下:

 

参考:http://spark.apache.org/docs/2.0.2/programming-guide.html#broadcast-variables