Spark IMF传奇行动第18课:RDD持久化、广播、累加器总结

昨晚听了王家林老师的Spark IMF传奇行动第18课:RDD持久化、广播、累加器,作业是unpersist试验,阅读累加器源码看内部工作机制:

scala> val rdd = sc.parallelize(1 to 1000)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:21

scala> rdd.persist
res0: rdd.type = ParallelCollectionRDD[0] at parallelize at <console>:21

scala> rdd.count
16/01/24 11:42:56 INFO DAGScheduler: Job 0 finished: count at <console>:24, took 1.451543 s
res1: Long = 1000

16/01/24 11:43:14 INFO DAGScheduler: Job 2 finished: count at <console>:24, took 0.094119 s
res3: Long = 1000

scala> rdd.unpersist()
16/01/24 11:43:43 INFO ParallelCollectionRDD: Removing RDD 0 from persistence list
16/01/24 11:43:43 INFO BlockManager: Removing RDD 0
res5: rdd.type = ParallelCollectionRDD[0] at parallelize at <console>:21

scala> rdd.count
16/01/24 11:44:56 INFO DAGScheduler: Job 0 finished: count at <console>:24, took 1.475321 s
res1: Long = 1000

persisit后,count执行快了许多,但unpersist后,执行又变慢了。

累加器Accumulator:全局唯一,对于Executor只能修改但不可读,只对Driver可读,只增不减

 val sum = sc.accumulator(0)
 val d1 = sc.parallelize(1 to 5)
 val result1 = d1.foreach(item => sum+= item)
 println(sum)

结果是15.

后续课程可以参照新浪微博 王家林_DT大数据梦工厂:http://weibo.com/ilovepains

王家林  中国Spark第一人,微信公共号DT_Spark

转发请写明出处。

时间: 2024-10-13 22:26:36

Spark IMF传奇行动第18课:RDD持久化、广播、累加器总结的相关文章

Spark IMF传奇行动第16课RDD实战总结

今晚听了王家林老师的Spark IMF传奇行动第16课RDD实战,课堂笔记如下: RDD操作类型:Transformation.Action.Contoller reduce要符合交换律和结合律 val textLines = lineCount.reduceByKey(_+_,1) textLines.collect.foreach(pair=> println(pair._1 + "="+pair._2)) def collect(): Array[T] = withScop

Spark IMF传奇行动第22课:RDD的依赖关系彻底解密

版权声明:本文为博主原创文章,未经博主允许不得转载.作者:HaiziS 昨晚听了王家林老师的Spark IMF传奇行动第22课:RDD的依赖关系彻底解密,笔记如下: 1,窄依赖是指每个父RDD的一个Partition最多被子RDD的一个Partition所使用,例如map.filter.union等都会产生窄依赖: 2宽依赖是指一个父RDD的Partition会被多个子RDD的Partition所使用,例如groupByKey.reduceByKey.sortByKey等操作都会产生宽依赖 表面

Spark IMF传奇行动第19课:spark排序总结

今晚听了王家林老师的Spark IMF传奇行动第19课:spark排序,作业是:1.scala 实现二次排序,使用object apply 2:自己阅读RangePartitioner 代码如下: /** * Created by 王家林 on 2016/1/10. */ object SecondarySortApp { def main(args: Array[String]){ val conf = new SparkConf() //创建SparkConf对象 conf.setAppNa

Spark IMF传奇行动第21课:从Spark架构中透视Job

版权声明:本文为博主原创文章,未经博主允许不得转载.作者:HaiziS 昨晚听了王家林老师的Spark IMF传奇行动第21课:从Spark架构中透视Job,笔记如下: 默认一个worker有一个executor,也可以设置多个,当cpu利用不足时. 并行度也是被继承的 当Spark集群启动的时候,首先启动Master进程负责整个集群资源管理和分配并接受作业的提交且为作业分配计算资源,每个工作节点默认启动一个Worker Process来管理当前节点的mem,cpu等计算资源并且向Master汇

Spark IMF传奇行动第20课:top N总结

版权声明:本文为博主原创文章,未经博主允许不得转载.作者:HaiziS 今晚听了王家林老师的Spark IMF传奇行动第20课:top N,作业是:scala写topGroup,且对组名key排序 代码如下: def main(args: Array[String]){ val conf = new SparkConf() //创建SparkConf对象 val sc = new SparkContext(conf) //通过传入SparkConf实例来定制Spark运行具体参数和配置信息来创建

Spark IMF传奇行动第17课Transformations实战总结

今晚听了王家林老师的Spark IMF传奇行动第17课Transformations实战,作业是用SCALA写cogroup: def main(args: Array[String]): Unit = { val sc = sparkContext("Transformations") cogroupTrans(sc) sc.stop() } def cogroupTrans(sc:SparkContext): Unit ={ val stuNames = Array( Tuple2

IMF传奇行动第82课:Spark Streaming第一课:案例动手实战并在电光石火间理解其工作原理

 流(Streaming),在大数据时代为数据流处理,就像水流一样,是数据流:既然是数据流处理,就会想到数据的流入.数据的加工.数据的流出. 日常工作.生活中数据来源很多不同的地方.例如:工业时代的汽车制造.监控设备.工业设备会产生很多源数据:信息时代的电商网站.日志服务器.社交网络.金融交易系统.黑客攻击.垃圾邮件.交通监控等:通信时代的手机.平板.智能设备.物联网等会产生很多实时数据,数据流无处不在. 在大数据时代SparkStreaming能做什么? 平时用户都有网上购物的经历,用户在

[Spark传奇行动] 第34课:Stage划分和Task最佳位置算法源码彻底解密

本課主題 Job Stage 划分算法解密 Task 最佳位置算法實現解密 引言 作业调度的划分算法以及 Task 的最佳位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心,这也是关系到整个作业有集群中该怎么运行:其次就是数据本地性,Spark 一舨的代码都是链式表达的,这就让一个任务什么时候划分成 Stage,在大数据世界要追求最大化的数据本地性,所有最大化的数据本地性就是在数据计算的时候,数据就在内存中.最后就是 Spark 的实现算法时候的略的怎么样.希望这篇文章能

Spark之RDD持久化、广播、累加器

RDD持久化.广播.累加器实质上分别涉及了RDD的数据如何保存,RDD在构建高效算法的时候涉及了persist或者checkpoint,以及广播和累加器,通过spark-shell可以试验一些小功能,spark-shell本身是spark的发行包推出的一个程序,通过这个程序可以直接写代码,spark-shell会把代码直接进行运行. 1.1.   RDD持久化实战 从2个层面考虑持久化: 1)操作RDD的时候怎么保存结果(属于Action的部分) 下面使用Spark-shell进行实战: 1.1