本节书摘来自华章出版社《Spark大数据分析:核心概念、技术及实践》一书中的第3章,第3.6节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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 惰性操作相关推荐

  1. 《Spark大数据分析:核心概念、技术及实践》大数据技术一览

    本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1节,作者穆罕默德·古勒(Mohammed Guller)更多章节内容可以访问云栖社区"华章 ...

  2. 《Spark大数据分析:核心概念、技术及实践》一1.5 NoSQL

    本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第1章,第1.5节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区& ...

  3. 《Spark大数据分析:核心概念、技术及实践》一3.5 API

    本节书摘来自华章出版社<Spark大数据分析:核心概念.技术及实践>一书中的第3章,第3.5节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区& ...

  4. 技术培训 | 大数据分析处理与用户画像实践

    孔淼:大数据分析处理与用户画像实践 直播内容如下: 今天咱们就来闲聊下我过去接触过的数据分析领域,因为我是连续创业者,所以我更多的注意力还是聚焦在解决问题和业务场景上.如果把我在数据分析的经验进行划分 ...

  5. 超详攻略!Databricks 数据洞察 - 企业级全托管 Spark 大数据分析平台及案例分析

    简介: 5分钟读懂 Databricks 数据洞察 ~ 更多详细信息可登录 Databricks 数据洞察 产品链接:https://www.aliyun.com/product/bigdata/sp ...

  6. 大数据分析与应用技术国家工程实验室项目通过验收

    点击上方蓝字关注我们 编者按: 大数据分析与应用技术国家工程实验室相关文章刊登于2018年第4期"大数据领域国家工程实验室"专栏,现大数据分析与应用技术国家工程实验室已圆满通过验收 ...

  7. 《Spark大数据分析实战》——1.4节弹性分布式数据集

    本节书摘来自华章社区<Spark大数据分析实战>一书中的第1章,第1.4节弹性分布式数据集,作者高彦杰 倪亚宇,更多章节内容可以访问云栖社区"华章社区"公众号查看 1. ...

  8. Spark做数据分析:Spark大数据分析的优势

    Spark发展到今年,也已经有了十个年头了,在这十年的时间里,Spark在数据分析方面的优势得以显现,成为越来越多的企业的选择.Spark做数据分析,得益于Spark计算框架的优势,也获得了很好的竞争 ...

  9. 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析

    摘要: 容器开启数据服务之旅系列(二):Kubernetes如何助力Spark大数据分析 (二):Kubernetes如何助力Spark大数据分析 概述 本文为大家介绍一种容器化的数据服务Spark ...

最新文章

  1. Linux之文本搜索命令 grep
  2. 思维dp ---- Codeforces Round #142 (Div. 1) D. Towers
  3. Android开发中的小技巧
  4. Java 8系列之Stream的强大工具Collector
  5. java 接口 返回值_java api返回值的标准化详解
  6. [转]URLRewrite隐藏.aspx后缀名的应用(转载+延伸)
  7. matlab基本运算与函数
  8. mysql key uni_uni app 踩坑实录
  9. Java消息中间件--JMS规范
  10. 多线程之并发基础(四)
  11. 命令行_Laravel-admin artisan 命令行脚本使用
  12. rust 死后不知道家在哪_赌王儿子何猷君被嘲妈宝,求婚不知道戒指戴哪只手,大喊求助妈妈...
  13. 阿里巴巴为什么选择Apache Flink?
  14. MySql command line client 命令系列
  15. DW集训营数据库Mysql梳理[五]
  16. 一句话说明sync, fsync, fdatasync的区别
  17. magedu.N45019第一周作业
  18. 第六学:binder---client与server向SM的求学之路
  19. IE浏览器打不开解决办法
  20. 软件测试面试-为什么选择软件测试?

热门文章

  1. AngularJS学习日记(四)Service和Provider
  2. (十六) 整合spring cloud云架构 -使用spring cloud Bus刷新配置
  3. Mac系统兼容软件 CrossOver 试用到期了怎么办
  4. 使用LVS+TUN搭建集群实现负载均衡
  5. 算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)
  6. BurpSuite的使用总结
  7. 深入理解JavaScript系列(33):设计模式之策略模式(转)
  8. Windows 根据进程名杀死进程 kill
  9. 2012-06-04 老男孩老师 “我毕业了”(转)
  10. pgp加密软件的简单使用