首页  

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