Learning Spark 笔记(三) -- take和persist

原创 2016年08月29日 00:58:18

4 . take(n)试图最小化访问分区,此操作并不一定以期待的顺序返回数据。
5 . 当持久化一个RDD的时候,计算这个RDD的节点会保存它们的分区。如果缓存了数据的节点出错了,Spark会在需要的时候重新计算丢失的分区。只有遇到action的时候才会真正的执行持久化操作。默认的持久化操作是将数据存放在JVM中作为非序列化对象。如下面wordcount的例子:

val lines = sc.textFile("...",100)
val words = lines.flatMap(x=>x.split(" "))
\\持久化words的RDD,并且内存硬盘序列化存储
words.persist(StorageLevel.MEMORY_AND_DISK_SER)                               
val wordcount = words.map(x=>(x,1))
val result = wordcount.reduceBykey(_+_)

如上面的wordcount,如果words的RDD中某一个丢失了,就只会对丢失的数据进行split操作,并不会全部计算。
关于persist的存储级别有5种,如图所示:

其中persist()和cache()相当于persist(StorageLevel.MEMORY_ONLY)。
后缀中带有 _SER 的表示序列化存储,使用序列化的方式来保存RDD数据,此时RDD中的每个分区都会序列化成一个大的字节数组,然后再持久化到内存或者磁盘中。序列化的方式可以减少持久化的数据对内存或磁盘的占用量,进而避免内存被持久化数据占用太多,从而发生频繁的GC。但是序列持久化会有序列化和反序列化的时间开销。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Spark的cache和persist

Spark的cache和persist -----------------------------------------------------------------------------...
  • baolibin528
  • baolibin528
  • 2017年01月13日 11:33
  • 912

每次进步一点点——spark中cache和persist的区别

昨天面试被问到了cache和persist区别,当时只记得是其中一个调用了另一个,但没有回答出二者的不同,所以回来后重新看了源码,算是弄清楚它们的区别了。cache和persist都是用于将一个RDD...
  • houmou
  • houmou
  • 2016年09月09日 23:35
  • 13685

Deep Learning(深度学习)学习笔记整理系列(三)

Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version...
  • lcj_cjfykx
  • lcj_cjfykx
  • 2015年02月25日 13:43
  • 1193

Deep Learning(深度学习)学习笔记整理系列之(四)

Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 201...
  • zouxy09
  • zouxy09
  • 2013年04月09日 00:46
  • 270575

Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

 周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =。这三章主要讲Spark的运行过程(本地+集群),性能调优以及Sp...
  • huobanjishijian
  • huobanjishijian
  • 2016年10月11日 14:50
  • 403

Spark中cache和persist的区别

在spark中,cache和persist都是用于将一个RDD进行缓存的,这样在之后的使用过程中就不需要重新进行计算了,可以大大节省程序运行的时间。 两者的区别在于:cache其实是调用了persis...
  • qiuhui19941118
  • qiuhui19941118
  • 2017年03月06日 22:45
  • 1168

spark中的map和flattop,persist和cache分别有什么区别?

首先,说一下map和flatmap: map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象,对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。任何原RDD中的元素在新RD...
  • j904538808
  • j904538808
  • 2017年12月21日 18:04
  • 21

【总结】论spark中的cache/persist/checkpoint

1. cache与persist cache 能够让重复数据在同一个 application 中的 jobs 间共享。RDD的cache()方法其实调用的就是persist方法,缓存策略均为MEM...
  • dengxing1234
  • dengxing1234
  • 2017年06月23日 20:11
  • 17456

2017.06.15--spark中cache和persist的区别

cache和persist都是用于将一个RDD进行缓存的,这样在之后使用的过程中就不需要重新计算了,可以大大节省程序运行时间。 cache和persist的区别 基于Spark 1.4.1...
  • z471365897
  • z471365897
  • 2017年06月15日 19:19
  • 131

Learning Spark 笔记(七) -- 受益于分区的操作

10 . 单元操作是怎样受益的?以reduceByKey为例子,reduceByKey是在本地归约后再发送到一个主机上再进行归约。如果父RDD是有分区信息的,那么就可能只会在本地归约了,而不会再跨网络...
  • BlockheadLS
  • BlockheadLS
  • 2016年08月30日 17:24
  • 288
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Learning Spark 笔记(三) -- take和persist
举报原因:
原因补充:

(最多只允许输入30个字)