Broadcast简介
Spark提供的广播变量可以解决闭包函数引用外部大变量引起的性能问题。Spark使用高效的广播算法分发广播变量,以降低通信成本。广播变量会以只读形式缓存在每个机器的本地,可以使用它们以高效的方式为每个节点提供大型输入数据集的副本。
广播变量的一个最重要的特点就是,在同一个执行器上的所有任务都可以共享此Broadcast,而不是每个任务使用一个变量副本。
广播变量是从一个不可变变量val v
,通过调用SparkContext.broadcast(v)
方法创建得到。广播变量是变量v的一个包装器,其值可以通过调用value
方法得到。
scala> val broadcastVar = sc.broadcast(Array(1,2,3,4))
broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(2