一、广播变量(broadcast variable)

广播变量:允许开发者将一个只读变量(Driver端)缓存到每个节点(Executor)上,而不是每个任务传递一个副本

图解:

定义广播变量

val arr = Array("java","scala","spark")
val broadcast = sc.broadcast(arr)

注意:变量一旦被定义为一个广播变量,那么这个变量只能读,不能修改

访问广播变量方式

val c = broadcast.value

案例:

object BroadcastDemo {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local[*]").setAppName("broadcast")val sc = new SparkContext(conf)//定义广播变量val arr = Array("hello","hi","good afternoon")val hei = sc.broadcast(arr)val rdd1 = sc.parallelize(List((1,"zhangsan"),(2,"lisi"),(3,"wangwu")))val rdd2 = rdd1.mapValues(x => {println(x)println(hei.value.toList)hei.value(0) + ":" + x})rdd2.foreach(println)}
}


注意事项:

  • 1、能不能将一个RDD使用广播变量广播出去?
    不能,因为RDD是不存储数据的。可以将RDD的结果广播出去。
  • 2、 广播变量只能在Driver端定义,不能在Executor端定义。
  • 3、 在Driver端可以修改广播变量的值,在Executor端无法修改广播变量的值。
  • 4、如果executor端用到了Driver的变量,如果不使用广播变量在Executor有多少Task就有多少Driver端的变量副本。
  • 5、如果Executor端用到了Driver的变量,如果使用广播变量在每个Executor中只有一份Driver端的变量副本。
  • 6、Driver端变量在每个Executor每个Task保存一个变量副本
  • 7、Driver端广播变量在每个Executor只保存一个变量副本

二、累加器

累加器:只允许added操作,常用于实现计数

图解:

定义累加器

val accum = sc.accumulator(0,"My Accumulator")

还原累加器

accum.value

案例:

object AccumulatorDemo {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local[*]").setAppName("accumulator")val sc = new SparkContext(conf)//定义累加器val accumValue = sc.accumulator(0,"hello")sc.makeRDD(List(1,2,3,4)).foreach(x=>accumValue+=x)println(accumValue.value)}
}


注意事项:

  • 1、累加器在Driver端定义赋初始值,累加器只能在Driver端读取最后的值,在Excutor端更新。
  • 2、累加器不是一个调优的操作,因为如果不这样做,结果是错的

SparkRDD优化(二)之SparkRDD共享变量(广播变量,累加器)相关推荐

  1. Spark共享变量(广播变量、累加器)

    Spark两种共享变量:广播变量(broadcast variable)与累加器(accumulator) 累加器用来对信息进行聚合,而广播变量用来高效分发较大的对象. 共享变量出现的原因: 通常在向 ...

  2. Spark编程指引(四)----共享变量(广播变量和累加器)

    转自:http://blog.csdn.net/happyanger6/article/details/46576831 共享变量 通常情况下,当向Spark操作(如map,reduce)传递一个函数 ...

  3. spark共享变量(广播变量Broadcast Variable,累加器Accumulators)

    2019独角兽企业重金招聘Python工程师标准>>> 一般来说,当一个函数被传递给Spark操作(例如map和reduce),在一个远程集群上运行,它实际上操作的是这个函数用到的所 ...

  4. Flink实操 : 广播变量/累加器/分布式缓存

    . 一 .前言 二 .广播变量使用 2.1.前言 2.2. 使用 三 .累加器 3.1. 前言 3.2. 使用 四 .分布式缓存 4.1. 前言 4.2.使用 一 .前言 二 .广播变量使用 2.1. ...

  5. 广播变量kyro_Spark简介

    简介: spark是一个内存计算框架 , 解决了mapreduce在迭代与交互方面的不足 迭代: 多轮算法计算形式,pagerank,逻辑回归等 交互: 实时数据,数据仓库查询等 spark重要概念: ...

  6. 【大数据开发】SparkCore——利用广播变量优化ip地址统计、Spark2.x自定义累加器

    文章目录 一.Broadcast广播变量 1.1 广播变量的逻辑过程 1.2 [优化ip地址统计](https://blog.csdn.net/weixin_37090394/article/deta ...

  7. spark学习-Spark广播变量与共享变量(1)

    1,概念 ###1.1 广播变量: 广播变量允许程序员将一个只读的变量缓存在每台机器上,而不用在任务之间传递变量.广播变量可被用于有效地给每个节点一个大输入数据集的副本.Spark还尝试使用高效地广播 ...

  8. Spark 的共享变量之累加器和广播变量

    前言 本期将介绍下 Spark 编程中两种类型的共享变量:累加器和广播变量. 简单说,累加器是用来对信息进行聚合的,而广播变量则是用来高效分发较大对象的. 学习目标 闭包的概念 累加器的原理 广播变量 ...

  9. Spark广播变量之超大表left join小表时如何进行优化以及小表的正确位置

    Spark广播变量之大表left join小表时如何进行优化以及小表的正确位置放置,带着这个目标我们一探究竟. 项目场景: 最近工作中遇到一个场景: 有一个超大表3.5T和一个小表963K 需要做关联 ...

  10. 031 广播变量与累加器

    1.广播变量机制 将传递给task的值,变成传递给executor. 为什么可以共用,因为task是executor下的线程. 只读的变量,在task中不允许修改 2.累加器介绍 在只写的变量,在ta ...

最新文章

  1. xcode上真机调试iphone4s出现“There was an internal API error.”解决方案
  2. 16个Linux服务器监控命令
  3. C# 读取ini文件 百度问问学习文档
  4. mac u盘格式化 linux系统文件,Mac上怎么制作Ubuntu的U盘开启盘(装Linux系统)
  5. 基于FPGA的AM信号调制与解调详细步骤
  6. elasticsearch 常用命令
  7. sql入侵 mysql日志_服务器入侵日志分析(一)——mysql日志位置确定
  8. Java核心技术36讲
  9. 2019年3月计算机ms二级考试题库,2019年3月全国计算机二级MSOffice章节练习题(2).doc...
  10. mysql 60万_MySQL5.7中60万数据的表分组统计很慢
  11. java程序linux自己更新自己,Linux下升级JAVA的一个小方法
  12. 你应该需要知道的前端小技巧
  13. Arthas排查生产环境CPU飚高问题
  14. 深度学习花书-5.4 估计、偏差和方差
  15. 查看计算机上隐藏用户,教你如何隐藏windows系统账户
  16. java不规则数组杨辉,JAVASE课程 第一章 第三讲程序控制与数组
  17. esayUI实践的一些体会
  18. CS269I:Incentives in Computer Science 学习笔记 Lecture 20: Fair Division(公平分配)(本系列完结撒花!)
  19. xp给指定计算机共享,WinXP系统设置访问共享提示指定网络名不可用怎么解决
  20. 动态规划和分治法解合唱队形问题

热门文章

  1. 7-19 统计人数(2008慈溪) (100分)
  2. 新闻资讯APP——Resultpage.vue组件
  3. SpringMVC工作原理之四:MultipartResolver
  4. 线段最大重合问题:最多有多少条线段是重合的
  5. 餐厅点菜c语言程序代码,C语言编程——餐馆点菜
  6. [论文笔记] Balboa: Bobbing and Weaving around Network Censorship
  7. C++实现视频格式转换PC客户端工具(支持多任务,暂停,断点续转,删除等基本功能)
  8. 美式英语口语中连读、略读,音变的技巧
  9. 广东英语高考怎么计算机,2019广东高考英语听说考试大纲出炉!附三大题型得分套路!...
  10. Idear集成maven环境