RDD是spark抽象的基石,可以说整个spark编程就是对RDD进行的操作

 
RDD是弹性的分布式数据集,它是只读的可分区的,这个数据集的全部或者部分数据可以缓存在内存中,在多次计算间重用。所谓的弹性意思是:内存不够时可以与磁盘进行交换。这是RDD另一个特性:内存计算。就是将数据保存到内存中,同时为了解决内存容量大小的问题,他允许所有的数据我们可以自由的设置cache,和 是否cache
 
RDD的特征:
(1)有一个分片列表,就是这个RDD可以被切分,和hadoop一样,能被切分的数据才能并行计算
(2)每一个分片由一个函数计算,这个函数是compute函数
(3)对其他RDD的依赖列表,依赖分为:宽依赖和窄依赖(narrow)。并不是所有的RDD都有依赖
(4)可选:key-value型的RDD是根据哈希值来区分的,类似于mapreduuce的parttioner接口,控制key分配到那个reduce
(5)可选:每一个分片的优先计算位置,就像hdfs的block的位置是优先计算的
基于RDD进行抽象,spark可以以一致的方式处理不同的大数据场景,包括mapreduce,streaming,sql,maching learning以及Graph等,正是RDD让spark有了无可比拟处理大数据的平台的优势
 
RDD是一个容错的,并行的数据结构。可以让用户显示的将数据存储到磁盘或内存中,并能够控制数据的分区。
通常来讲,针对数据处理有不同的处理模型:iterative algorithms,relational queries,mapreduce, stream proccessing模型,比如hadoop使用的是mapreduce模型,strom使用是stream processing模型。而spark混合了这四种模型,所以spark可以处理各种大数据处理场景.
 
RDD的数据结构
RDD作为数据结构,本质上是一个只读的,可分区的数据集,每一个分区都是一个datasets片段。RDD可以相互依赖,如果RDD的每一个分区都只能被一个child RDD使用,那这个RDD就是narrow(窄) dependency;如果RDD的每一个分区可以被多个child RDD使用,那么这个RDD就是shuffle(wide) dependency,不同的操作根据其特性会产生不同的依赖,比如:map操作会产生narrow dependency,keybyreduce会产生shuffle dependency。
 
spark将依赖分为narrow dependnecy和shuffle dependency主要是因为两点:
一:narrow dependency可以支持在同一个cluster node上以pipeline的形式执行多条命令。shuflle dependency要求所有的父分区都是可用的
二:从失败恢复的角度考虑
narrow dependency的恢复更加有效,因为它只需要重新计算丢失的parent parttion就可,并且可以并行的在不同的节点进行计算。而shuffle dependency它涉及到RDD各级多个parent parttions

解析spark RDD的更多相关文章

  1. 通过WordCount解析Spark RDD内部源码机制

    一.Spark WordCount动手实践 我们通过Spark WordCount动手实践,编写单词计数代码:在wordcount.scala的基础上,从数据流动的视角深入分析Spark RDD的数据 ...

  2. Spark RDD深度解析-RDD计算流程

    Spark RDD深度解析-RDD计算流程 摘要  RDD(Resilient Distributed Datasets)是Spark的核心数据结构,所有数据计算操作均基于该结构进行,包括Spark ...

  3. Spark RDD概念学习系列之rdd的依赖关系彻底解密(十九)

    本期内容: 1.RDD依赖关系的本质内幕 2.依赖关系下的数据流视图 3.经典的RDD依赖关系解析 4.RDD依赖关系源码内幕 1.RDD依赖关系的本质内幕 由于RDD是粗粒度的操作数据集,每个Tra ...

  4. Spark RDD编程核心

    一句话说,在Spark中对数据的操作其实就是对RDD的操作,而对RDD的操作不外乎创建.转换.调用求值. 什么是RDD RDD(Resilient Distributed Dataset),弹性分布式 ...

  5. Apache Spark 2.2.0 中文文档 - Spark RDD(Resilient Distributed Datasets)论文 | ApacheCN

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

  6. Apache Spark RDD(Resilient Distributed Datasets)论文

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

  7. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  8. 大数据技术之_19_Spark学习_04_Spark Streaming 应用解析 + Spark Streaming 概述、运行、解析 + DStream 的输入、转换、输出 + 优化

    第1章 Spark Streaming 概述1.1 什么是 Spark Streaming1.2 为什么要学习 Spark Streaming1.3 Spark 与 Storm 的对比第2章 运行 S ...

  9. 大数据技术之_19_Spark学习_05_Spark GraphX 应用解析 + Spark GraphX 概述、解析 + 计算模式 + Pregel API + 图算法参考代码 + PageRank 实例

    第1章 Spark GraphX 概述1.1 什么是 Spark GraphX1.2 弹性分布式属性图1.3 运行图计算程序第2章 Spark GraphX 解析2.1 存储模式2.1.1 图存储模式 ...

随机推荐

  1. hadoop之linux常用命令

    Linux的命令后面会有命令选项,有的选项还有选项值.选项的前面有短横线“-”,命令.选项.选项值之间使用空格隔开.有的命令没有选项,会有参数.选项是命令内置的功能,参数是用户提供的符合命令格式的内容 ...

  2. bzoj2301(莫比乌斯反演)

    bzoj2301 题意 求区间 [a, b] 和 区间 [c, d] 有多少对数 (x, y) 使得 gcd(x, y) = k . 分析 参考ppt 参考blog 考虑用容斥分成四次查询, 对于每次 ...

  3. Manacher【p4555】 [国家集训队]最长双回文串

    题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为 n 的串 S ,求 S 的最长双回文子串 T ,即可 ...

  4. JSK 18: 跳跃游戏

    题目描述 给定一个非负整数数组,假定你的初始位置为数组第一个下标. 数组中的每个元素代表你在那个位置能够跳跃的最大长度. 请确认你是否能够跳跃到数组的最后一个下标. 例如:$A = [2,3,1,1, ...

  5. schema get_ddl

    select dbms_metadata.get_ddl('INDEX','INDEX_CC_TAXID','CACS9DBSIT1') from dual; select dbms_metadata ...

  6. POJ 2686 Traveling by Stagecoach(状压DP)

    [题目链接] http://poj.org/problem?id=2686 [题目大意] 给出一张无向图,你有n张马车票每张车票可以租用ti匹马, 用一张马车票从一个城市到另一个城市所用的时间为这两个 ...

  7. JavaEE目录

    第一章: Spring介绍 Spring项目搭建 Spring概念 第二章: Sprin配置详解 属性注入(构造方法注入,设值注入) 实例化(构造器(空参构造器),静态工厂,工厂方法) 装配(xml方 ...

  8. HashMap源码-描述部分

    /** * Hash table based implementation of the <tt>Map</tt> interface. This * implementati ...

  9. JAVA和.NET工作流相关项目收集

    .NET以自主实现为主, 暂未发现使用WWF框架开发的开源工作流,    java以BPM系为主 . .NET: RoadFlow : http://www.cqroad.cn/ 使用了百度编辑器扩展 ...

  10. sqlserver 出现sql被锁时,查看加锁和被锁的sql

    原文:sqlserver 出现sql被锁时,查看加锁和被锁的sql DECLARE @spid INT DECLARE @blk INT DECLARE @count INT DECLARE @ind ...