Spark RDD Cache算子的作用
2015-01-14 16:53
218 查看
我们经常会对RDD执行一系列Transformation算子操作,逻辑上每经历一次变换,就会将RDD转换为一个新的RDD,RDD会被划分成很多的分区分布到集群的多个节点中。
分区是逻辑概念,为了防止函数式数据不可变行(immutable)导致的内存需求无限扩张,使得系统内存被快速用完,Spark使用延迟执行(lazy)的方式执行,即只有操作累计到Action(行动),算子才会触发整个操作序列的执行,中间结果不会单独再重新分配内存,而是在同一个数据块上进行流水线操作。
也就是说变换前后的新旧RDD的分区在物理上可能是同一块内存存储,这是Spark内部做的优化。有些RDD是计算的中间结果,其分区并不一定有相对应的内存或磁盘数据与之对应,所以如果想要复用某一个RDD,需要通过Cache算子,将数据缓存(或者说固化)到内存中。
分区是逻辑概念,为了防止函数式数据不可变行(immutable)导致的内存需求无限扩张,使得系统内存被快速用完,Spark使用延迟执行(lazy)的方式执行,即只有操作累计到Action(行动),算子才会触发整个操作序列的执行,中间结果不会单独再重新分配内存,而是在同一个数据块上进行流水线操作。
也就是说变换前后的新旧RDD的分区在物理上可能是同一块内存存储,这是Spark内部做的优化。有些RDD是计算的中间结果,其分区并不一定有相对应的内存或磁盘数据与之对应,所以如果想要复用某一个RDD,需要通过Cache算子,将数据缓存(或者说固化)到内存中。
相关文章推荐
- Spark RDD Cache算子的作用
- Spark RDD概念学习系列之Spark的算子的作用(十四)
- Spark RDD概念学习系列之Spark的算子的分类
- Spark算子:RDD基本转换操作(2)–coalesce、repartition
- spark RDD算子(六)之键值对聚合操作reduceByKey,foldByKey,排序操作sortByKey
- Spark编程之基本的RDD算子之fold,foldByKey,treeAggregate, treeReduce
- Spark算子:RDD行动Action操作(2)–take、top、takeOrdered
- Spark算子:RDD行动Action操作(3)–aggregate、fold、lookup
- Spark算子:RDD键值转换操作(2)–combineByKey、foldByKey
- Spark算子:RDD基本转换操作(3)–randomSplit、glom
- Spark算子--RDD的基本转换
- Spark算子--RDD的基本转换
- spark调度系列------3. RDD依赖的建立以及RDD依赖在任务提交到调度系统的作用
- 大数据:Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子
- Spark(四):RDD算子分类。
- Spark算子:RDD行动Action操作(1)–first、count、reduce、collect
- Spark RDD中cache和persist的区别
- Spark算子:RDD行动Action操作(4)–countByKey、foreach、foreachPartition、sortBy
- Spark算子:RDD基本转换操作(mapPartitions、mapPartitionsWithIndex)
- Spark算子:RDD基本转换操作(7)–zipWithIndex、zipWithUniqueId