zoukankan      html  css  js  c++  java
  • spark 广播变量与累加器

    如何理解广播变量?

    适用场景:大变量,比如100M以上的大集合。算子函数中使用到外部变量时,默认情况下,Spark会将该变量复制多个副本,通过网络传输到task中,此时每个task都有一个变量副本。如果变量本身比较大的话(比如100M,甚至1G),那么大量的变量副本在网络中传输的性能开销,以及在各个节点的Executor中占用过多内存导致的频繁GC,都会极大地影响性能。

    如果使用的外部变量比较大,建议使用Spark的广播功能,对该变量进行广播。广播后的变量,会保证每个Executor的内存中,只驻留一份变量副本,而Executor中的task执行时共享该Executor中的那份变量副本。这样的话,可以大大减少变量副本的数量,从而减少网络传输的性能开销,并减少对Executor内存的占用开销,降低GC的频率。

     spark.sparkContext.setLogLevel("error")
    
        val data=spark.sparkContext.textFile("F:\IdeaWorkspace\lzm\Resource\kzc202007.txt")
        val l=List("hadoop","apache")
        val lbroad=spark.sparkContext.broadcast(l)
        data.flatMap(x=>x.trim.split(" ")).map((_,1)).filter(x=>{
          !lbroad.value.contains(x._1)
        }).reduceByKey(_+_).collect().foreach(println(_))

    通过value访问广播变量的值

  • 相关阅读:
    vb 退出窗口提示
    游戏开发 简介
    gridview 缓存 优化
    Android中Bitmap和Drawable
    解析网络 xml 流程
    vb 检测是否突然断网
    进度条
    网站广告
    android 五大布局
    VB 读写文件
  • 原文地址:https://www.cnblogs.com/students/p/14263066.html
Copyright © 2011-2022 走看看