zoukankan      html  css  js  c++  java
  • Spark广播变量和累加器

    一.广播变量图解

      

    二.代码 

    1 val conf = new SparkConf()
    2 conf.setMaster("local").setAppName("brocast")
    3 val sc = new SparkContext(conf)
    4 val list = List("hello xasxt")
    5 val broadCast = sc.broadcast(list)
    6 val lineRDD = sc.textFile("./words.txt")
    7 lineRDD.filter { x => broadCast.value.contains(x) }.foreach { println}
    8 sc.stop()

    三.注意事项

      1.不能将一个RDD使用广播变量广播出去,因为RDD是不存储数据的【弹性分布式数据集】。可以将RDD的结果广播出去【collect,数据不能太多】。

      2.广播变量只能在Driver端定义,不能在Executor端定义。

      3.Driver端可以修改广播变量的值,在Executor端无法修改广播变量的值。

    四.累加器图解

      

    五.代码

    1 val conf = new SparkConf()
    2 conf.setMaster("local").setAppName("accumulator")
    3 val sc = new SparkContext(conf)
    4 val accumulator = sc.accumulator(0)
    5 sc.textFile("./words.txt").foreach { x =>{accumulator.add(1)}}
    6 println(accumulator.value)
    7 sc.stop()

    六.注意事项

      1.累加器在Driver端定义赋初始值,累加器只能在Driver端读取,在Excutor端更新。

      

  • 相关阅读:
    权限管理
    Linux常用命令
    SSM的开发步骤分析
    03每日课后作业面试题汇总
    Redis常用命令
    大觅网07day
    消息队列面试题
    bzoj 3745: [Coci2015]Norma
    Codeforces 343E Pumping Stations
    UOJ #236. 【IOI2016】railroad
  • 原文地址:https://www.cnblogs.com/yszd/p/11228392.html
Copyright © 2011-2022 走看看