spark 广播变量
所属分类 spark
浏览量 666
广播变量 每一个Executor中有一份只读的数据
task 直接读取这份数据
task Executor BlockManager 获取广播变量
如果BlockManager中没有,会从driver端拉取
Driver端 blockManagerMaster
广播变量不能修改,如需修改可以将数据存到外部数据源
分布式计算分发对象,譬如 字典 黑白名单等
如果不是广播变量,每个task分发一份
声明为 广播变量,每个executor一份
import org.apache.spark.{SparkConf, SparkContext}
object BroadcastDemo extends App{
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("sparkAccumulatorDemo")
var sc = new SparkContext(sparkConf);
val list = List(1,2,3,4,5,6,7,8,9)
val whiteList = List(1,3,5)
val whiteListBroadcast = sc.broadcast(whiteList)
val rdd = sc.makeRDD(list,3)
// val rdd2 = rdd.filter(whiteList.contains(_))
val rdd2 = rdd.filter(whiteListBroadcast.value.contains(_))
println("rdd2.count="+rdd2.count)
println("whiteList.size="+whiteList.size)
println("broadcast.value.size="+whiteListBroadcast.value.size)
println("broadcast.value="+whiteListBroadcast.value)
sc.stop();
}
https://gitee.com/dyyx/hellocode/blob/master/demo/sparkdemo/src/main/java/com/dyyx/BroadcastDemo.scala
上一篇
下一篇
Scala 柯里化 Currying
scala 方法和函数的区别
scala 学的走火入魔
scala future for 实例
scala Future sequence
scala Promise