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. (8)C#字符串

    一.字符串 为什么说string是一个不可变的字符序列. string a="me"; a="meeeee"; string b="me" ...

  2. 洛谷——P1029 最大公约数和最小公倍数问题

    P1029 最大公约数和最小公倍数问题 题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1 ...

  3. codevs 1025 选菜——01背包

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂—— ...

  4. HttpWebRequest 请求 Api 及 异常处理

    HttpWebRequest request = WebRequest.CreateHttp(url); request.Method = "post"; request.Head ...

  5. mysql语法语句

    将一个字段中的timestamp修改成可视化时间 update table set f1 = IF( LOCATE('-',f1)>0, f1, IFNULL(FROM_UNIXTIME(f1/ ...

  6. Windows 8.1中WinRT的变化(一)——新增控件

    这次WinRT的变化还是不小的,就拿新增控件来说,就有如下几种: AppBar 控件 我以前写过一篇文章接受过如何在WinRT程序中快速创建Metro风格图标,现在MS已经把他们标准化了,就不用我们自 ...

  7. HTML 中的 dl(dt,dd)、ul(li)、ol(li)

    HTML <dl> 标签 #定义和用法 <dl> 标签定义了定义列表(definition list). <dl> 标签用于结合 <dt> (定义列表中 ...

  8. Word中设置所有西文字体为新罗马

    如图所示,不用一个一个设置,在字体里直接设置细纹字体:Times New Roman ,中文字体不用管.

  9. Winform打砖块游戏制作step by step第4节---小球移动

    一 引子 为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持. 预备知识,无GDI画图基础的童鞋请先阅读一篇文章让你彻底弄懂WinFor ...

  10. DefaultHttpRequestRetryHandler有重试3次的机制啊 为什么要重写?

    DefaultHttpRequestRetryHandler有重试3次的机制啊 为什么要重写?