Spark学习笔记之SparkRDD

一、   基本概念

  1. RDD(resilient distributed datasets)弹性分布式数据集。

来自于两方面

①   内存集合和外部存储系统

②   通过转换来自于其他RDD,如map,filter等

2.创建操作(creation operation):RDD的创建由SparkContext来负责。

3.转换操作(transformation operation):将一个RDD通过一定操作转换为另一个RDD。

4.控制操作(control operation):对RDD进行持久化等。

5.行动操作(action operation):Spark为惰性计算,对RDD的行动操作都会触发Spark作业的运行。

基本分为两类

①   使操作结果变为Scala变量或者标量。

②   将RDD保存到外部文件或者数据库系统中。

6.RDD分区(partitions)

分区多少关系到对这个RDD进行并行计算的粒度,每一个RDD分区的计算操作都在一个单独的任务中被执行

7.RDD优先位置(preferredLocations)

是RDD中每个分区所存储的位置

8.RDD依赖关系(dependencies)

窄依赖:每一个父RDD的分区最多只被子RDD的一个分区使用

宽依赖:多个子RDD的分区会依赖同一个父RDD的分区

9.RDD分区计算(compute)

Spark中每个RDD的计算都是以分区为单位的,而且RDD中的compute函数都是在对迭代器进行复合,只返回相应分区数据的迭代器。

10.RDD分区函数(partitioner)

两类分区函数:HashPartitioner和RangPartitioner。

二、   创建操作

  1. 集合创建操作:makeRDD可以指定每个分区perferredLocations参数parallelize则没有
  2. 存储创建操作:Spark与Hadoop完全兼容,所以对Hadoop所支持的文件类型或者数据库类型,Spark同样支持。
  3. 基本转换操作

三、   转换操作

map:将RDD中T类型一对一转换为U

distinct:返回RDD不重复元素

flatMap:将元素一对多转换

reparation、coalesce:对RDD分区重新划分,reparation只是coalesce接口中shuffle为true的简易实现

randomSplit:将RDD切分

glom:将类型为T的元素转换为Array[T]

union等等

  1. 键值RDD转换操作

partitionBy、mapValues、flatMapValues等

  1. RDD依赖关系,Spark生成的RDD对象一般多于用户书写的Spark应用程序中包含的RDD,因为RDD在转换操作过程中产生临时的RDD

四、   控制操作

cache():

persist():保留着RDD的依赖关系

checkpoint(level:StorageLevel):RDD[T]切断RDD依赖关系

五、   行动操作

  1. 集合标量行动操作

first:返回RDD第一个元素

count:返回RDD中元素个数

reduce:对RDD的元素进行二元计算

aggregate:聚合函数

fold:是aggregate的便利借口

  1. 存储行动操作

saveAsHadoopFile

saveAsHadoopDataset等

Spark学习笔记之SparkRDD的更多相关文章

  1. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

  2. Spark学习笔记2(spark所需环境配置

    Spark学习笔记2 配置spark所需环境 1.首先先把本地的maven的压缩包解压到本地文件夹中,安装好本地的maven客户端程序,版本没有什么要求 不需要最新版的maven客户端. 解压完成之后 ...

  3. Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)

    Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...

  4. Spark学习笔记-GraphX-1

    Spark学习笔记-GraphX-1 标签: SparkGraphGraphX图计算 2014-09-29 13:04 2339人阅读 评论(0) 收藏 举报  分类: Spark(8)  版权声明: ...

  5. Spark学习笔记3——RDD(下)

    目录 Spark学习笔记3--RDD(下) 向Spark传递函数 通过匿名内部类 通过具名类传递 通过带参数的 Java 函数类传递 通过 lambda 表达式传递(仅限于 Java 8 及以上) 常 ...

  6. Spark学习笔记0——简单了解和技术架构

    目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...

  7. Spark学习笔记2——RDD(上)

    目录 Spark学习笔记2--RDD(上) RDD是什么? 例子 创建 RDD 并行化方式 读取外部数据集方式 RDD 操作 转化操作 行动操作 惰性求值 Spark学习笔记2--RDD(上) 笔记摘 ...

  8. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  9. Spark学习笔记——读写Hbase

    1.首先在Hbase中建立一张表,名字为student 参考 Hbase学习笔记——基本CRUD操作 一个cell的值,取决于Row,Column family,Column Qualifier和Ti ...

随机推荐

  1. IOS-指定返回Modal的控制器presentViewController

    [self.presentingViewController.presentingViewController dismissViewControllerAnimated:NO completion: ...

  2. Best Practices for Performance_3.Improving Layout Performance 优化布局

    http://developer.android.com/training/improving-layouts/index.html 1. 优化布局层次 1)  每增加一个View或者布局,都会增加额 ...

  3. eclipse使用技巧之 //TODO标识

    通常有三种方式去表示你的待办: //TODO 待实现 //XXX 勉强可以工作,但是性能差 //FIXME 代码错误,必须修复. 在task窗口可以查找所有TODO. 使用ctrl + K 去单页面定 ...

  4. 用户输入函数--raw_input、input

    1.raw_input python2.7用户输入字符串的话用raw_input.如果使用input输入字符串的话需要先把字符串放到变量中才可,但是用input输入数字的话是可以直接输入的,所以说在p ...

  5. Bandpass Signals(带通信号,或称窄带信号)

    带通信号 一个实的带通信号$x(t)$可以表示为 \[x(t) = r(t)\cos (2\pi f_0 t + \phi_x(t)) \] 其中$r(t)$是幅度调制或包络,$\phi_x(t)$是 ...

  6. .net自定义WebService WSDL

    最近工作需要向第三方提供一个WebService服务,坑爹的是第三方背景牛X,我方提供的服务必须完全遵照其客户端方预先定义好了的接口,一个符号都不允许修改. .net平台编写的WebService由于 ...

  7. 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 http://www.jb51.net/css/383986.html

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题   百度源代码如下 复制代码 代码如下: <!Do ...

  8. 在阿里云主机上基于CentOS用vsftpd搭建FTP服务器

    最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  9. mybatis动态调用表名和字段名

    以后慢慢启用个人博客:http://www.yuanrengu.com/index.php/mybatis1021.html 一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用 ...

  10. Android 通过广播获取网络状态

    Android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验.          本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请 ...