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的三种方式

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

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

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

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

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

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

val data = Array(, , , , )
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. Android採用async框架实现文件上传

    页面效果 须要的权限 <uses-permission android:name="android.permission.INTERNET"/> 网络訪问权限; 布局文 ...

  2. Android Studio 使用笔记:查看类结构和继承关系

    选中类 ,按下F4,可以打开类的源代码 在 Eclipse 中我们可以使用 Ctrl + O 组合热键查看类的结构,Android Studio 中也可以做到. View -> Tool Win ...

  3. 使用phpize建立php扩展(Cannot find config.m4)

    php源码:/root/soft/php-5.3.4php安装: /usr/local/php [root@ns root]# phpizeCannot find config.m4.Make sur ...

  4. PL/0编译程序

    Pl/0语言文法的BNF表示: 〈程序〉→〈分程序>. 〈分程序〉→ [<常量说明部分>][<变量说明部分>][<过程说明部分>]〈语句〉 <常量说明部 ...

  5. 【JMeter4.0学习(一)】之FTP性能测试脚本开发,并实现上传下载功能

    参考:<Jmeter常用脚本开发之FTP请求>感谢作者:rosa2015 一.首先,搭建FTP服务器,参考地址:<[FTP]之windows8.1上搭建FTP服务器方法> 二. ...

  6. JavaWeb知识点总结一

    JavaWeb知识点总结一 常见的状态码以及其含义 一些常见HTTP状态码为: -- 服务器成功返回网页 -- 服务器不理解请求的语法 -- 请求的网页不存在 -- 服务不可用 常见HTTP状态码大全 ...

  7. Swift_4_闭包(Blocks)

    import Foundation println("Hello, World!") var arr = [1,2,4,6,74,2] func hasClosure(list:[ ...

  8. 转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS

      目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 ...

  9. CSS3 --添加阴影(盒子阴影、文本阴影的使用)

     CSS3 - 给div或者文字添加阴影(盒子阴影.文本阴影的使用)CSS3定义了两种阴影:盒子阴影和文本阴影.其中盒子阴影需要IE9及其更新版本,而文本阴影需要IE10及其更新版本.下面分别介绍两种 ...

  10. js父页面和子页面之间传值

    今天和朋友一块讨论,怎样通过js在父页面和子页面之间传值的问题,总结例如以下: 需求描写叙述:父页面有多个子页面.实如今父页面点击子页面,传值到子页面. 看着非常easy,试了好久.主要纠结在怎样获取 ...