2024-1-24
广播变量特点
- Broadcast Variable会将使用到的变量,只会为每个节点拷贝一份,不会为每个task进行拷贝,能够优化性能(在task数量比较大体现更明显),减少网络传输及内存消耗
- 通过SparkContext的broadcast()方法,针对某个变量创建广播变量,可以通过广播变量的value()方法获取值
- 广播变量是只读
Scala
object BroadcastTest {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf().setAppName("Broadcast").setMaster("local")
val sc = new SparkContext(conf)
sc.setLogLevel("ERROR")
val listRDD: RDD[Int] = sc.parallelize(List(1, 2, 3, 4))
var num = 2
val bc: Broadcast[Int] = sc.broadcast(num)
listRDD.map(x=> x * bc.value).foreach(println)
}
}