广播变量

首页 » Spark » 广播变量

广播变量只能在Driver定义,在Executor端使用,不能在Executor端使用,不能在Excutor改变
不能将RDD广播出去,可以将RDD的结果广播出去
如果不使用广播变量在Executor中有多少task,就有多少个Driver端的变量副本,如果使用广播变量,在每个Executor中只有一份Driver端的变量副本

广播变量
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
object 广播变量 {
  
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("test")
    val sc=new SparkContext(conf)
    
    //下面这种方式占用内存高
//    val blackList=List[String]("zha","long")
//    val rdd1=sc.parallelize(Array("zha","long","xue","wang"))
//    val rdd2=rdd1.filter(s=>{
//      !blackList.contains(s)
//      /*
//      * xue
//      * wang
//      */
//    }).foreach(println)
    

    //使用广播变量
    val blackList=List[String]("zha","long")
    val bclist=sc.broadcast(blackList)
    val rdd1=sc.parallelize(Array("zha","long","xue","wang"))
    val rdd2=rdd1.filter(s=>{
      val list=bclist.value
      !list.contains(s)
      /*
      * xue
      * wang
      */
    }).foreach(println)
    sc.stop()
  }
}

分享到:
赞(0) 打赏

评论 9

评论前必须登录!

 

  1. #1

    看了那么多博客,就你的能看懂

    hello6个月前 (03-27)
  2. #2

    可以

    中国加油小子6个月前 (03-27)
  3. #3

    可以

    笨鸟先飞6个月前 (03-27)
  4. #4

    我也是学计算机的

    你好6个月前 (03-27)
  5. #5

    最好再详细点

    我也是渣渣6个月前 (03-27)
  6. #6

    还可以

    小白6个月前 (03-28)
  7. #7

    最好再详细点

    渣渣混4个月前 (05-26)
  8. #8

    挺明白的

    你哥4个月前 (05-26)
  9. #9

    小蚯蚓4个月前 (05-26)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00