RDD是spark计算框架的核心,spark相比于hadoop的优越性在RDD中体现得淋漓尽致。对于RDD的介绍,最好的资料就是那篇专门介绍RDD的论文了,已经有中文翻译。使用scala编写spark应用,给人的感觉就像是在使用scala编写普通的scala程序,感觉spark编程和scala编程完成融合在一起了– RDD就是scala的一个类。

RDD是一个只读不可修改的数据集,在scala spark编程中可以认为这是一个不可修改的对象,这个对象包含用户需要的数据集。RDD对象定义了用户常用的方法,比如gourpby方法,map方法。这些方法也叫spark算子,通过使用这些算子,编程人员可以灵活地编写spark程序(不像hadoop那样基本上只有map和reduce方法)。同一个RDD中的数据可能存储在不同的节点上面,所以,RDD的一些操作会消耗比较长的时间,比如groupby操作,可能会引发洗牌shuffle。

RDD算子可以分为两类,一类是转换(transformation),另一类是行动(action)。无论是transformation类型的算子还是action类型的算子,它们都是RDD对象的方法,也就是spark算子。区分它们的方法就是,如果某一算子的返回值是一个RDD,那么该算子就属于transformation,否则就属于action。transformation类型的算子不会触发RDD程序的执行,action类型的算子才可以。所以,spark程序在最后必须有action类的算子。如果有时候action类型的算子是多余的,那么可以在最后使用RDD.foreach()类来触发RDD的执行。

RDD是相连的,一个RDD产生另一个RDD,或者多个RDD产生多个RDD,当得到我们希望的RDD之后,就执行action算子,触发前面RDD的执行。如果前面某一个RDD数据丢失了,spark框架会从数据丢失的RDD前面的RDD中再次计算出这个RDD。比如在上图中,在计算G的RDD的时候,发现B的RDD数据丢失了,那么spark会自动从A的RDD中计算再次生成B的RDD。如果A的RDD也有问题,那么spark就从原始数据集中重新开始计算。这里就体现了Spark框架的容错机制–和hadoop完全不一样的容错机制,后者是通过副本冗余来实现的。很多时候,为了避免重新计算RDD,编程人员可以使用RDD的cache()函数把这个RDD缓存在内存中(也可以保存在硬盘中),当其他多个RDD都用到之前已经缓存的RDD的时候,就可以从内存中读取它了,而不是再次计算。

RDD总结:

  • RDD是scala中的一个抽象类,保存着相关数据
  • 不可修改
  • 分为transformation和action两种类型,后者才能触发RDD的执行
  • 通过重新计算来实现容错。
  • spark编程其实就是对RDD算子的操作

本人还写了一篇总结和理解RDD算子操作的文章Spark算子汇总和理解(详细)

RDD(Resilient Distributed Datasets 弹性分布式数据集)相关推荐

  1. Spark的核心RDD(Resilient Distributed Datasets弹性分布式数据集)

    Spark的核心RDD(Resilient Distributed Datasets弹性分布式数据集) 铺垫 在hadoop中一个独立的计算,例如在一个迭代过程中,除可复制的文件系统(HDFS)外没有 ...

  2. Spark学习笔记10-RDD(Resilient Distributed Datasets)

    1.RDD概念 RDD(Resilient Distributed Datasets),弹性分布式数据集.是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的 ...

  3. spark学习笔记:弹性分布式数据集RDD(Resilient Distributed Dataset)

    弹性分布式数据集RDD 1. RDD概述 1.1 什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可 ...

  4. Resilient Distributed Datasets (RDD)

    Resilient Distributed Datasets RDD本质上是一组数据的Spark表示,分布在多台机器上,使用API​​让您对其进行操作.RDD可以来自任何数据源,例如文本文件,通过JD ...

  5. Spark初识-弹性分布式数据集RDD

    Spark 的核心是建立在统一的抽象弹性分布式数据集(Resiliennt Distributed Datasets,RDD)之上的,这使得 Spark 的各个组件可以无缝地进行集成,能够在同一个应用 ...

  6. Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)

    Spark RDD(Resilient Distributed Datasets)论文 概要 1: 介绍 2: Resilient Distributed Datasets(RDDs) 2.1 RDD ...

  7. RDD论文翻译 --弹性分布式数据集:一种基于内存的集群计算的容错性抽象方法

    原文出处:http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-82.pdf 译文原处:http://blog.csdn.net/cj77 ...

  8. Spark弹性分布式数据集RDD:基于内存集群计算的容错抽象

    摘要 我们提出的弹性分布式数据集(RDDs),是一个让程序员在大型集群上以容错的方式执行基于内存计算的分布式内存抽象.RDDs受启发于两类使用当前计算框架处理不高效的应用:迭代算法和交互式数据挖掘工具 ...

  9. ibatis 存储过程 结果集 map_「大数据」(七十五)Spark之弹性分布式数据集

    [导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[75]篇文章,欢迎阅读和收藏] 1 基本概念 弹性分布式数据集( RDD , Resilient Distributed ...

最新文章

  1. python getostime_python中sys,os,time模块的使用(包括时间格式的各种转换)
  2. 多平台支持:下一步容器技术热点
  3. oracle 9i aix 迁移,Oracle 9i 在AIX上的安装 (转)
  4. msysGit管理GitHub代码
  5. C语言中的三目运算符是啥?有何用处?
  6. seqkit根据基因id_ID转换靠的是深厚的背景知识加上一点代码技巧
  7. 猎头人生, FOR IT Candidate 转CSDN
  8. C/C++ Bug记录
  9. java中级工程师所需的技能_java中级工程师岗位职责
  10. PS:修复图片模糊(字体)
  11. 计算机二本院校排名民办河北,2020年河北民办二本大学及分数线-河北最好的民办大学学费...
  12. SpringBoot实现短信验证码校验
  13. Entry name ‘res/color/material_on_surface_disabled.xml‘ collided
  14. 优盘在计算机上无法显示,u盘在电脑上识别不出来怎么办_u盘在电脑不显示如何修复-win7之家...
  15. Check service:platformservice is now critical 原因分析
  16. 智能硬件开发如何选择低功耗MCU?
  17. MATLAB差值画树叶,MATLAB分形图形 树叶
  18. 入门nosql数据库(非关系型数据库)
  19. Linux光盘检测,Linux下如何检测DVD刻录机的设备
  20. pytorch训练网络 程序未报错 但是训练不动

热门文章

  1. 求5个学生4门成绩的总分和平均分
  2. Android系统源码学习——ramdisk.img、system.img、userdata.img三个文件介绍
  3. PHP判断文件是否被引入的方法get_included_files
  4. 图书管理系统需求说明书
  5. 纯数学教程 Page 325 例LXVIII (13)
  6. 第五节13读取配置中的连接字符串
  7. 职场新人:工作七大忌
  8. linux doc下生成学号,linux的.doc
  9. 2020十大热门机器学习项目
  10. 信息熵是什么 转 理论吃透的创新解释