Spark学习之六-RDD编程进阶(少)
来源:互联网 发布:剪歌软件 编辑:程序博客网 时间:2024/04/27 17:33
共享变量
1.累加器
val blanklines=sc.accumulator(0) 创建Accumulator[Int]并初始化为0
案例:
计算空行:
val records=sc.textFile("11.txt")//读取文件
val blank_counts=sc.accumulator(0),创建行记录并初始化为0
val record=records.flatMap(line=>{
if(line == ""){//空行判断
blank_count += 1}//进行叠加
line.split(" ")分割字符
)
record.saveAsTextFile("/temp/")
blank_count// 由于flatMap是惰性计算的,只有在saveAsTextFile操作之后才会进行计算
总结:累加器的用法
①首先创建具有初始值的sc.accumulator(0)累加器
②在闭包的执行器代码中使用累加器的+=方法增加累加器的值
③驱动器可以调用累加器的value方法访问他的值
2.广播变量
向每个节点只发送一次变量
val sim=sc.broadcast(...)
3.外部程序间的管道
使用pie()去调用外部程序
val distScript="./test.R"
val distScriptName="text.R"
sc.addFile(distScript) //构建一个文件列表,让每个工作节点在Spark作业中下载列表的文件。这些文件可以来自驱动器的本地文件系统,也可以来自HDFS。。。
val distances=contacts.values.flatMap(x=>x.map(....)).pipe(Seq(SparkFiles.get(distScriptName)))
阅读全文
0 0
- Spark学习之六-RDD编程进阶(少)
- Spark学习之RDD编程(2)
- Spark学习之三-RDD编程
- Spark之RDD编程
- Spark学习笔记(一)--RDD编程
- 大数据学习笔记(六)-Spark的RDD
- Spark学习-RDD编程基础
- Spark学习—RDD编程
- (六)Spark源码理解之RDD
- (六)Spark源码理解之RDD----part1
- (六)Spark源码理解之RDD----part2
- (六)Spark源码理解之RDD----part3
- (六)Spark源码理解之RDD----part4
- (六)Spark源码理解之RDD----part5
- 【spark RDD】RDD编程
- Spark RDD编程(二)
- Spark编程指南入门之Java篇六-RDD持久化介绍
- Spark RDD API 参考示例(六)
- spi驱动框架
- 1030. 完美数列(25)
- 读书笔记:《明朝那些事第二部:万国来朝》
- useful alias
- 初识CGI
- Spark学习之六-RDD编程进阶(少)
- 内核对象(3)之单实例程序的创建
- c++基础之2进制、10进制和16进制以及内存表示
- 深入分析Java中CAS机制
- Angular基础(八) Observable & RxJS
- 基于.NET CORE微服务框架 -谈谈surging API网关
- LINQ入门
- AJAX | HTTP
- Tensorflow中tf.train.exponential_decay函数(指数衰减法)