博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RDD的缓存,依赖,spark提交任务流程
阅读量:7239 次
发布时间:2019-06-29

本文共 892 字,大约阅读时间需要 2 分钟。

1.RDD的缓存

Spark速度非常快的原因之一,就是在不同操作中可以在内存中持久化或缓存个数据集。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用。这使得后续的动作变得更加迅速。RDD相关的持久化和缓存,是Spark最重要的特征之一。可以说,缓存是Spark构建迭代式算法和快速交互式查询的关键。

RDD缓存方式

RDD通过persist方法或cache方法可以将前面的计算结果缓存,但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。

通过查看源码发现cache最终也是调用了persist方法,默认的存储级别都是仅在内存存储一份,Spark的存储级别还有好多种,存储级别在object StorageLevel中定义的。

 

缓存有可能丢失,或者存储存储于内存的数据由于内存不足而被删除,RDD的缓存容错机制保证了即使缓存丢失也能保证计算的正确执行。通过基于RDD的一系列转换,丢失的数据会被重算,由于RDD的各个Partition是相对独立的,因此只需要计算丢失的部分即可,并不需要重算全部Partition。

2.Sprak提交任务流程

DAG:有向无环图(代表数据流向)

DAGScheduler:将DAG图划分为一个个的stage,然后以taskset的方式提交

wordcount 切分stage的流程(两个stage)

 stage,依赖的划分

RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。

窄依赖

窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用,如map方法应用是对每个分区的数据进行处理

宽依赖

宽依赖指的是多个子RDD的Partition会依赖同一个父RDD的Partition

 

 

 

 

转载于:https://www.cnblogs.com/Khaleesi-yu/p/7426963.html

你可能感兴趣的文章
图像处理之基础---滤波器之高斯低通滤波器3c代码实现yuv,rgb
查看>>
windows程序内部运行机制
查看>>
访问svc 文件,编译器错误消息: CS0016,未能写入输出文件
查看>>
Spring中bean的范围
查看>>
(混合背包 多重背包+完全背包)The Fewest Coins (poj 3260)
查看>>
畅通工程 - 并查集的应用
查看>>
OpenCv图像像素操作
查看>>
myeclipse快捷键大全
查看>>
编程之美1.2 | 中国象棋将帅问题
查看>>
Matplotlib学习---用matplotlib画阶梯图(step plot)
查看>>
Linux非ROOT(普通用户)环境安装/启动/运行 MySQL server CentOS7为例
查看>>
latex 技巧汇总
查看>>
SpringMVC配置解决中文乱码的过滤器
查看>>
第28章 高级分组函数
查看>>
542. 01 Matrix
查看>>
centos7备份还原与grub2引导和rescue模式修改root密码
查看>>
神经网络的基础-前向传播
查看>>
使用VsCode自带的Emmet语法
查看>>
基于 REST 的 Web 服务:基础
查看>>
IDEA入门级使用教程
查看>>