Spark广播变量和累加器

心已赠人 2024-04-20 09:38 158阅读 0赞

一.广播变量图解

  1343081-20190722205812552-757845358.png

二.代码 

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

三.注意事项

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

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

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

四.累加器图解

  1343081-20190722210219304-375230243.png

五.代码

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

六.注意事项

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

  

转载于:https://www.cnblogs.com/yszd/p/11228392.html

发表评论

表情:
评论列表 (有 0 条评论,158人围观)

还没有评论,来说两句吧...

相关阅读