Spark cache()与unpersist()使用位置

简介: Spark在执行过程中是懒加载模式,RDD转换仅仅是构建DAG描述而不执行,只有遇到action算子才会真正的运行

目前有两种情况:
A

val rdd1 = sc.textFile("...")
rdd1.cache()   // rdd1缓存
val rdd2 = rdd1.filter(...)
val rdd3 = rdd1.map(...)
rdd2.cache()
rdd3.cache()
rdd1.unpersist()

B

val rdd1 = sc.textFile("...")
rdd1.cache()   // rdd1缓存
val rdd2 = rdd1.filter(...)
val rdd3 = rdd1.map(...)
rdd2.cache()
rdd3.cache()
rdd2.saveAsTextFile("...")
rdd3.saveAsTextFile("...")
rdd1.unpersist()

由于Spark在执行过程中是懒加载模式,RDD转换仅仅是构建DAG描述而不执行,只有遇到action算子才会真正的运行。因此在选项A中,调用cache后,对算子进行转换操作,再调用unpersist时,仍然只有作业描述,而没有正在运行的执行。

我们在实际开发中应该选择B写法。在action算子之前调用cache进行缓存rdd,在action执行完成后才真正的调用unpersist释放缓存。

备注:cache 和 persist调用只是将RDD添加到在作业执行期间标记为持久化的RDD的Map中。但是,unpersist直接告诉blockManger从存储中释放RDD并且删除持久化RDD Map中的引用。

目录
相关文章
|
5月前
|
SQL 分布式计算 Spark
Spark3.x的Cache能不能让我在2022好好睡觉
Spark3.x的Cache能不能让我在2022好好睡觉
37 0
|
分布式计算 Spark 存储
Spark Relational Cache实现亚秒级响应的交互式分析
阿里云E-MapReduce (EMR) 是构建在阿里云云服务器 ECS 上的开源 Hadoop、Spark、HBase、Hive、Flink 生态大数据 PaaS 产品。提供用户在云上使用开源技术建设数据仓库、离线批处理、在线流式处理、即时查询、机器学习等场景下的大数据解决方案。在2019杭州云栖大会大数据生态专场上,阿里巴巴技术专家王道远为大家分享了阿里云EMR的Spark Relational Cache实现亚秒级响应的交互式分析。
Spark Relational Cache实现亚秒级响应的交互式分析
|
缓存 分布式计算 云栖大会
2019杭州云栖大会回顾之Spark Relational Cache实现亚秒级响应的交互式分析
本文来自2019杭州云栖大会大数据生态专场中的分享《Spark Relational Cache实现亚秒级响应的交互式分析》
2566 0
2019杭州云栖大会回顾之Spark Relational Cache实现亚秒级响应的交互式分析
|
SQL 存储 缓存
EMR Spark Relational Cache的执行计划重写
作者:王道远,花名健身, 阿里巴巴计算平台EMR技术专家。 背景 EMR Spark提供的Relational Cache功能,可以通过对数据模型进行预计算和高效地存储,加速Spark SQL,为客户实现利用Spark SQL对海量数据进行即时查询的目的。
|
存储 分布式计算 调度
EMR Spark Relational Cache 利用数据预组织加速查询
本文介绍了EMR Spark的Relational Cache如何从数据量较大的Cube中快速提取出所需数据加速查询的原理。通过列式存储、文件索引、Z-Order等技术,我们可以快速过滤数据,大大减少实际发生的IO数据量,避免IO瓶颈的出现,从而优化整体查询性能。
|
分布式计算 Spark 存储
EMR Spark Relational Cache 利用数据预组织加速查询
在利用Relational Cache进行查询优化时,我们需要通过预计算,存储大量数据。而在查询时,我们真正需要读取的数据量也许并不大。为了能让查询实现秒级响应,这就涉及到优化从大量数据中快速定位所需数据的场景。
1802 0
|
SQL 分布式计算 Apache
EMR Spark Relational Cache如何支持雪花模型中的关联匹配
我们需要找到一种方式可以通过单个Relational Cache支持优化多个关联查询的方式,从而在加速用户查询的同时,减少创建和更新relational cache的代价。Record Preserve Join是支持这种优化的非常有效的方式。
|
SQL 分布式计算 Spark
EMR Spark Relational Cache如何支持雪花模型中的关联匹配
在Spark中,Join通常是代价比较大,尤其是shuffle join。Relational Cache将反范式化表(即关联后的大表)保存为relational cache,便可以使用cache重写执行计划,提高查询效率。
4585 0
|
SQL 分布式计算 Spark
钉钉群直播【Spark Relational Cache 原理和实践】
主要介绍Relational Cache/物化视图的历史和背景,以及EMR Spark基于Relational Cache加速Spark查询的技术方案,及如何通过基于Relational Cache的数据预计算和预组织,使用Spark支持亚秒级响应的交互式分析使用场景。
|
SQL 存储 缓存
EMR Spark Relational Cache的执行计划重写
背景 EMR Spark提供的Relational Cache功能,可以通过对数据模型进行预计算和高效地存储,加速Spark SQL,为客户实现利用Spark SQL对海量数据进行即时查询的目的。Relational Cache的工作原理类似物化视图,在用户提交SQL语句时对语句进行分析,并选出可用的预计算结果来加速查询。
3279 0