Spark学习之编程进阶——累加器与广播(5)
2024-09-30 20:55:48
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标准流就行。
最新文章
- 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])
- ubuntu 安装transmission最新版
- Unity中游戏的声音管理
- 获取ICommand的图片
- C#复习③
- poj1416 Shredding Company
- 基础篇-Windows消息机制
- Android SDK Tools Platform-tools Build-tools
- DWZ集成的xhEditor编辑器浏览本地图片上传的设置
- platform_device与platform_driver
- Python 2 到 Python 3的变化
- 使用ArcGIS API for Silverlight实现地形坡度在线分析
- mongodb type it for more
- MySQL之乱码问题解决详解
- OOP的完美点缀—AOP之SpringAOP实现原理
- Cookie Manager
- linux固定IP
- PHP7.1安装xdebug
- 使用deb 打包开发的postgres extension
- spark RDD 常见操作
热门文章
- 大话设计模式C++实现-第8章-工厂方法模式
- cmd-net命令详解
- 集成环信时遇到的问题file not found: libEaseMobClientSDK.a
- DMA32映射问题
- ie 代理设置中地址和端口置灰的解决办法
- python 【目录】
- 南阳oj 语言入门 A+B paoblem 题目477 题目844
- [办公应用]word 2007:全屏快捷键,让复制图片保持原样大小(office 全屏快捷键)
- 【bzoj1452】[JSOI2009]Count
- spi和I2c的速率