Spark学习之编程进阶——累加器与广播(5)

1. Spark中两种类型的共享变量:累加器(accumulator)与广播变量(broadcast variable)。累加器对信息进行聚合,而广播变量用来高效分发较大的对象。

2. 共享变量是一种可以在Spark任务中使用的特殊类型的变量。

3. 累加器的用法:

  • 通过在驱动器中调用SparkContext.accumulator(initialValue)方法,创建出存有初始值的累加器。返回值为org.apache.spark.Accumlator[T]对象,其中T是初始值initialValue的类型。
  • Spark闭包里的执行器代码可以使用累加器的+=方法(在Java中是add)增加累加器的值。
  • 驱动器程序可以调用累加器的value属性(在Java中使用value()或setValue()来访问累加器的值。

    Python中实现累加空行

    file = sc.textFile(inputFile)
#创建Accumulator[Int]并初始化为0
blankLines = sc.accumulator(0) def extractCallSigns(Line):
globle blankLines #访问全局变量
if (line == ""):
blankLines += 1
return line.split("") callSigns = file.flatMap(extractCallSigns)
callSigns.saveAsTextFile(outputDir + "/callsigns")
print "Blank lines:%d" % blankLines.value

4. Spark的广播变量,它可以让程序高效地向所有工作节点发送一个较大的只读值,以供一个或多个Spark操作使用。

Scala代码使用广播变量查询国家
    //查询RDD contactCounts中的呼号的对应位置。将呼号前缀
//读取为国家代码进行查询
val signPrefixes = sc.broadcast(loadCallSignTable())
val countryContactCounts = contactCounts.map{case (sign,count) =>
val country = lookupInArray(sign,signPrefixes.value)
(country,count)
}.reduceByKey((x,y) => x+y)
countryContactCounts.saveAsTextFile(outputDir + "/countries.text")

5. Spark在RDD上提供pipe()方法。Spark的pipe()方法可以让我们使用任意一种语言实现Spark作业中的部分逻辑,只要它的读写Unix标准流就行。

最新文章

  1. 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])
  2. ubuntu 安装transmission最新版
  3. Unity中游戏的声音管理
  4. 获取ICommand的图片
  5. C#复习③
  6. poj1416 Shredding Company
  7. 基础篇-Windows消息机制
  8. Android SDK Tools Platform-tools Build-tools
  9. DWZ集成的xhEditor编辑器浏览本地图片上传的设置
  10. platform_device与platform_driver
  11. Python 2 到 Python 3的变化
  12. 使用ArcGIS API for Silverlight实现地形坡度在线分析
  13. mongodb type it for more
  14. MySQL之乱码问题解决详解
  15. OOP的完美点缀—AOP之SpringAOP实现原理
  16. Cookie Manager
  17. linux固定IP
  18. PHP7.1安装xdebug
  19. 使用deb 打包开发的postgres extension
  20. spark RDD 常见操作

热门文章

  1. 大话设计模式C++实现-第8章-工厂方法模式
  2. cmd-net命令详解
  3. 集成环信时遇到的问题file not found: libEaseMobClientSDK.a
  4. DMA32映射问题
  5. ie 代理设置中地址和端口置灰的解决办法
  6. python 【目录】
  7. 南阳oj 语言入门 A+B paoblem 题目477 题目844
  8. [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)
  9. 【bzoj1452】[JSOI2009]Count
  10. spi和I2c的速率