《Spark大数据分析:核心概念、技术及实践》一3.6 惰性操作
3.6 惰性操作
RDD的创建和转换方法都是惰性操作。当应用调用一个返回RDD的方法的时候,Spark并不会立即执行运算。比如,当你使用SparkContext的textFile方法从HDFS中读取文件时,Spark并不会马上从硬盘中读取文件。类似地,RDD转换操作(它会返回新RDD)也是惰性的。Spark会记录作用于RDD上的转换操作。
让我们考虑如下示例代码。
上面三行代码看起来很快就会执行完,哪怕textFile方法读取的是一个包含了10TB数据的文件。这其中的原因是当你调用textFile方法时,它并没有真正读取文件。类似地,filter方法也没有立即遍历原RDD中的每一个元素。
Spark仅仅记录了这个RDD是怎么创建的,在它上面做转换操作会创建怎样的子RDD等信息。Spark为每一个RDD维护其各自的血统信息。在需要的时候,Spark利用这些信息创建RDD或重建RDD。
如果RDD的创建和转换都是惰性操作,那么Spark什么时候才真正读取数据和做转换操作的计算呢?下面将会解答这个问题。
触发计算的操作
当Spark应用调用操作方法或者保存RDD至存储系统的时候,RDD的转换计算才真正执行。保存RDD至存储系统也被视为一种操作,尽管它并没有向驱动程序返回值。
当Spark应用调用RDD的操作方法或者保存RDD的时候,它触发了Spark中的连锁反应。当调用操作方法的时候,Spark会尝试创建作为调用者的RDD。如果这个RDD是从文件中创建的,那么Spark会在worker节点上读取文件至内存中。如果这个RDD是通过其他RDD的转换得到的子RDD,Spark会尝试创建其父RDD。这个过程会一直持续下去,直到Spark找到根RDD。然后Spark就会真正执行这些生成RDD所必需的转换计算,从而生成作为调用者的RDD。最后,执行操作方法所需的计算,将生成的结果返回给驱动程序。
惰性转换使得Spark可以高效地执行RDD计算。直到Spark应用需要操作结果时才进行计算,Spark可以利用这一点优化RDD的操作。这使得操作流水线化,而且还避免了在网络间不必要的数据传输。
《Spark大数据分析:核心概念、技术及实践》一3.6 惰性操作相关推荐
- 《Spark大数据分析:核心概念、技术及实践》大数据技术一览
本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问云栖社区"华章 ...
- 《Spark大数据分析:核心概念、技术及实践》一1.5 NoSQL
本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1.5节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区& ...
- 《Spark大数据分析:核心概念、技术及实践》一3.5 API
本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第3章,第3.5节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区& ...
- 技术培训 | 大数据分析处理与用户画像实践
孔淼:大数据分析处理与用户画像实践 直播内容如下: 今天咱们就来闲聊下我过去接触过的数据分析领域,因为我是连续创业者,所以我更多的注意力还是聚焦在解决问题和业务场景上.如果把我在数据分析的经验进行划分 ...
- 超详攻略!Databricks 数据洞察 - 企业级全托管 Spark 大数据分析平台及案例分析
简介: 5分钟读懂 Databricks 数据洞察 ~ 更多详细信息可登录 Databricks 数据洞察 产品链接:https://www.aliyun.com/product/bigdata/sp ...
- 大数据分析与应用技术国家工程实验室项目通过验收
点击上方蓝字关注我们 编者按: 大数据分析与应用技术国家工程实验室相关文章刊登于2018年第4期"大数据领域国家工程实验室"专栏,现大数据分析与应用技术国家工程实验室已圆满通过验收 ...
- 《Spark大数据分析实战》——1.4节弹性分布式数据集
本节书摘来自华章社区<Spark大数据分析实战>一书中的第1章,第1.4节弹性分布式数据集,作者高彦杰 倪亚宇,更多章节内容可以访问云栖社区"华章社区"公众号查看 1. ...
- Spark做数据分析:Spark大数据分析的优势
Spark发展到今年,也已经有了十个年头了,在这十年的时间里,Spark在数据分析方面的优势得以显现,成为越来越多的企业的选择.Spark做数据分析,得益于Spark计算框架的优势,也获得了很好的竞争 ...
- 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析
摘要: 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析 (二):Kubernetes如何助力Spark大数据分析 概述 本文为大家介绍一种容器化的数据服务Spark ...
最新文章
- Linux之文本搜索命令 grep
- 思维dp ---- Codeforces Round #142 (Div. 1) D. Towers
- Android开发中的小技巧
- Java 8系列之Stream的强大工具Collector
- java 接口 返回值_java api返回值的标准化详解
- [转]URLRewrite隐藏.aspx后缀名的应用(转载+延伸)
- matlab基本运算与函数
- mysql key uni_uni app 踩坑实录
- Java消息中间件--JMS规范
- 多线程之并发基础(四)
- 命令行_Laravel-admin artisan 命令行脚本使用
- rust 死后不知道家在哪_赌王儿子何猷君被嘲妈宝,求婚不知道戒指戴哪只手,大喊求助妈妈...
- 阿里巴巴为什么选择Apache Flink?
- MySql command line client 命令系列
- DW集训营数据库Mysql梳理[五]
- 一句话说明sync, fsync, fdatasync的区别
- magedu.N45019第一周作业
- 第六学:binder---client与server向SM的求学之路
- IE浏览器打不开解决办法
- 软件测试面试-为什么选择软件测试?
热门文章
- AngularJS学习日记(四)Service和Provider
- (十六) 整合spring cloud云架构 -使用spring cloud Bus刷新配置
- Mac系统兼容软件 CrossOver 试用到期了怎么办
- 使用LVS+TUN搭建集群实现负载均衡
- 算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)
- BurpSuite的使用总结
- 深入理解JavaScript系列(33):设计模式之策略模式(转)
- Windows 根据进程名杀死进程 kill
- 2012-06-04 老男孩老师 “我毕业了”(转)
- pgp加密软件的简单使用