《Spark Streaming实时流式大数据处理实战》 ——3.7.2 广播变量(Broadcast Variables)

举报
华章计算机 发表于 2020/02/22 18:35:48 2020/02/22
【摘要】 本节书摘来自华章计算机《Spark Streaming实时流式大数据处理实战》 —— 书中第3章,第3.7.2节,作者是肖力涛 。

3.7.2  广播变量(Broadcast Variables)

  累加器比较简单、直观,如果需要在Spark中进行一些全局统计就可以使用它。但是有时候仅仅一个累加器并不能满足需求,比如数据库中一份公共配置表格,需要同步给各个节点进行查询。我们先来简单介绍Spark中的广播变量。

  广播变量允许程序员在每台机器上缓存一个只读的变量,而不是每个任务保存一份拷贝。例如,利用广播变量,我们能够以一种更有效的方式将一个大数据量输入集合的副本分配给每个节点。Spark也尝试着利用有效的广播算法去分配广播变量,以减少通信的成本。

  一个广播变量可以通过调用SparkContext.broadcast(v)方法从一个初始变量v中创建。广播变量是v的一个包装变量,它的值可以通过value方法访问,下面的代码说明了这个过程:

  

  scala> val broadcastVar = sc.broadcast(Array(1, 2, 3))

  broadcastVar: org.apache.spark.broadcast.Broadcast[Array[Int]] = Broadcast(0)

  

  scala> broadcastVar.value

  res0: Array[Int] = Array(1, 2, 3)

  

  从以上代码可以看出,广播变量的声明很简单,调用broadcast就能完成,并且scala中一切可序列化的对象都是可以进行广播的。这就给了我们很大的想象空间,可以利用广播变量将一些经常访问的大变量进行广播,而不是每个任务保存一份,这样可以减少资源上的浪费。在后续章节中可以看到对广播变量的具体应用。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。