spark 广播变量  
   
所属分类 spark
浏览量 968
广播变量 每一个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