Spark里面提供了一个比较重要的抽象——弹性分布式数据集(resilient distributed dataset),简称RDD。弹性:数据可大可小,可分布在内存或磁盘,当某台机器宕机时,能够按照RDD的liveage重新计算,从而恢复。

RDD有5个特性:

1.一个分区列表,用于并行计算,每个分区对应一个原子数据集,作为这个分区的数据输入

2.计算这个RDD某个分区数据(这个分区数据是由父RDD对应分区计算出来的)函数

3.一个依赖列表,这个rdd依赖的父rdd是哪些(在计算的时候可以通过这个依赖来容错)

4.这个rdd的分区元素数据信息,其实就是该RDD怎么分区的,比如某个RDD是通过hash partition得到的

5.分区数据的存储地址,用来实现计算任务的本地性,即把计算放在由相关数据的机器上执行。

6.spark的计算是“流式”计算,如,有可能一个block的数据量很大,一次性读出来肯定很占内存,所有的数据块都都出来时可能内存还不够,那么它不是将整个block读出来,而是读出一条处理计算一条,类似流式计算,这样可以省内存不用担心内存不够。

创建RDD的三种方式

方式一:从存储在存储系统中的数据上来创建,比如:

  1. val inputRdd: RDD[(LongWritable,Text)] = sc.newAPIHadoopFile("hdfs://master:9000/word.txt",classOf[TextInputFormat],classOf[LongWritable])

这个就是从hdfs存储系统中的数据创建一个RDD

方式二:可以基于一个已经存在的RDD来创建一个RDD

  1. val line: RDD[(String, Int)] = lines.map(line=>(line,)) //从已经存在的lines上创建一个新的RDD

方式三:可以基于一个已经在spark内存中的列表数据来创建一个RDD,比如:

  1. val data = Array(, , , , )
  2. val distData = sc.parallelize(data)

spark sql将Dataset的api翻译成RDD的api来达到计算目的

spark ml是利用Dataset的api和RDD的api来达到计算目的

spark mllib是利用RDD api来达到计算目的

spark Streaming将DStreaming的api翻译成RDD api来达到计算目的

spark graphx是利用RDD api以及拓展RDD来达到计算目的

Spark- RDD简介的更多相关文章

  1. Spark RDD简介与运行机制概述

    RDD工作原理: 主要分为三部分:创建RDD对象,DAG调度器创建执行计划,Task调度器分配任务并调度Worker开始运行. SparkContext(RDD相关操作)→通过(提交作业)→(遍历RD ...

  2. Spark Streaming简介及原理

    简介: SparkStreaming是一套框架. SparkStreaming是Spark核心API的一个扩展,可以实现高吞吐量的,具备容错机制的实时流数据处理. 支持多种数据源获取数据: Spark ...

  3. spark RDD 常见操作

    fold 操作 区别 与 co 1.mapValus 2.flatMapValues 3.comineByKey 4.foldByKey 5.reduceByKey 6.groupByKey 7.so ...

  4. Spark RDD理解

    目录 ----RDD简介 ----RDD操作类别 ----RDD分区 ----宽依赖和窄依赖作用 ----RDD分区划分器 ----RDD到调度 返回顶部 RDD简介 RDD是弹性分布式数据集(Res ...

  5. spark生态圈简介

    原文引自:http://www.cnblogs.com/shishanyuan/p/4700615.html 1.简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algori ...

  6. Spark Rdd coalesce()方法和repartition()方法

    在Spark的Rdd中,Rdd是分区的. 有时候需要重新设置Rdd的分区数量,比如Rdd的分区中,Rdd分区比较多,但是每个Rdd的数据量比较小,需要设置一个比较合理的分区.或者需要把Rdd的分区数量 ...

  7. Spark RDD API详解(一) Map和Reduce

    RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD.从编程的角度来看,RDD可以简单看成是一个数组.和普通数组的区别是,RDD中的数据是分区存储的,这样不同 ...

  8. Spark RDD aggregateByKey

    aggregateByKey 这个RDD有点繁琐,整理一下使用示例,供参考 直接上代码 import org.apache.spark.rdd.RDD import org.apache.spark. ...

  9. Spark RDD解密

    1.  基于数据集的处理: 从物理存储上加载数据,然后操作数据,然后写入数据到物理设备; 基于数据集的操作不适应的场景: 不适合于大量的迭代: 不适合交互式查询:每次查询都需要对磁盘进行交互. 基于数 ...

  10. Spark - RDD(弹性分布式数据集)

    org.apache.spark.rddRDDabstract class RDD[T] extends Serializable with Logging A Resilient Distribut ...

随机推荐

  1. mac eclipse 删除不用的workspace

    file--->switch workspace---->other 点击 recent workspace--->选中删除即可

  2. ANDROID常用的命令(转载,后续自己完善)

    1.adb devices:查看当前已连接的设备.2.adb shell:进入android的shell模式.3.echo 3>/proc/sys/vm/drop_caches:清除一下系统的c ...

  3. [译]GLUT教程(目录)

    http://www.lighthouse3d.com/tutorials/glut-tutorial/ GLUT是OpenGL Utility Toolkit的意思.作者Mark J. Kilgar ...

  4. 【Mac系统】之fiddler下载和安装

    使用教程参考:http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html#request 一.首先,在Mac下安装fiddler时, ...

  5. 【文献阅读】Self-Normalizing Neural Networks

    Self-Normalizing Neural Networks ,长达93页的附录足以成为吸睛的地方(给人感觉很厉害), 此paper提出了新的激活函数,称之为 SELUs ,其具有normaliz ...

  6. ubuntu下搭建的lamp环境新建站点

    这几天刚装了一个ubuntu 16.04桌面版,总之来来回回几遍才基本把环境搭建好,本来用apt-get搭建,结果不知道什么原因16.04版不支持装php5 ,提示源放弃了php5版本,不得不使用ph ...

  7. Linux进程间通信(五) - 信号灯(史上最全)及其经典应用案例

    信号灯概述 什么是信号灯 信号灯用来实现同步,用于多线程,多进程之间同步共享资源(临界资源). PV原语:信号灯使用PV原语 P原语操作的动作是: u  sem减1. u  sem减1后仍大于或等于零 ...

  8. Lumen开发:lumen源码解读之初始化(4)——服务提供(ServiceProviders)与路由(Routes)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前面讲了singleton和Middleware,现在来继续讲ServiceProviders和Routes,还是看起始文件bootstrap/a ...

  9. TextView实现打印机效果 ,字符串逐字显示

    https://github.com/lygttpod/AndroidCustomView/blob/master/app/src/main/java/com/allen/androidcustomv ...

  10. x^a=b(mod c)求解x在[0,c-1]上解的个数模板+原根求法

    /************************************* 求解x^a=b(mod c) x在[0,c-1]上解的个数模板 输入:1e9>=a,b>=1,1e9>= ...