Spark学习笔记之SparkRDD
Spark学习笔记之SparkRDD
一、 基本概念

- 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。
二、 创建操作
- 集合创建操作:makeRDD可以指定每个分区perferredLocations参数parallelize则没有
- 存储创建操作:Spark与Hadoop完全兼容,所以对Hadoop所支持的文件类型或者数据库类型,Spark同样支持。
- 基本转换操作
三、 转换操作
map:将RDD中T类型一对一转换为U
distinct:返回RDD不重复元素
flatMap:将元素一对多转换
reparation、coalesce:对RDD分区重新划分,reparation只是coalesce接口中shuffle为true的简易实现
randomSplit:将RDD切分
glom:将类型为T的元素转换为Array[T]
union等等
- 键值RDD转换操作
partitionBy、mapValues、flatMapValues等
- RDD依赖关系,Spark生成的RDD对象一般多于用户书写的Spark应用程序中包含的RDD,因为RDD在转换操作过程中产生临时的RDD
四、 控制操作
cache():
persist():保留着RDD的依赖关系
checkpoint(level:StorageLevel):RDD[T]切断RDD依赖关系
五、 行动操作
- 集合标量行动操作
first:返回RDD第一个元素
count:返回RDD中元素个数
reduce:对RDD的元素进行二元计算
aggregate:聚合函数
fold:是aggregate的便利借口
- 存储行动操作
saveAsHadoopFile
saveAsHadoopDataset等
Spark学习笔记之SparkRDD的更多相关文章
- spark学习笔记总结-spark入门资料精化
Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...
- Spark学习笔记2(spark所需环境配置
Spark学习笔记2 配置spark所需环境 1.首先先把本地的maven的压缩包解压到本地文件夹中,安装好本地的maven客户端程序,版本没有什么要求 不需要最新版的maven客户端. 解压完成之后 ...
- Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)
Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...
- Spark学习笔记-GraphX-1
Spark学习笔记-GraphX-1 标签: SparkGraphGraphX图计算 2014-09-29 13:04 2339人阅读 评论(0) 收藏 举报 分类: Spark(8) 版权声明: ...
- Spark学习笔记3——RDD(下)
目录 Spark学习笔记3--RDD(下) 向Spark传递函数 通过匿名内部类 通过具名类传递 通过带参数的 Java 函数类传递 通过 lambda 表达式传递(仅限于 Java 8 及以上) 常 ...
- Spark学习笔记0——简单了解和技术架构
目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...
- Spark学习笔记2——RDD(上)
目录 Spark学习笔记2--RDD(上) RDD是什么? 例子 创建 RDD 并行化方式 读取外部数据集方式 RDD 操作 转化操作 行动操作 惰性求值 Spark学习笔记2--RDD(上) 笔记摘 ...
- Spark学习笔记1——第一个Spark程序:单词数统计
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...
- Spark学习笔记——读写Hbase
1.首先在Hbase中建立一张表,名字为student 参考 Hbase学习笔记——基本CRUD操作 一个cell的值,取决于Row,Column family,Column Qualifier和Ti ...
随机推荐
- 自己家里搭建NAS服务器有什么好方案?
转自:https://www.zhihu.com/question/21359049 作者:陈二发链接:https://www.zhihu.com/question/21359049/answer/6 ...
- Base64加密工具-iBlogs
简易的Base64加密工具开发步骤 1.编写Java测试桩 import java.io.BufferedReader; import java.io.IOException; import java ...
- VR外包团队:长年承接VR虚拟现实外包(应用、游戏、视频、漫游等)
北京动点飞扬软件,从事外包业务五年,长年承接全景VR视频,全景普通视频外包. 以下是全景VR视频案例(可操作,人不动景物不动,人移动,景物跟随) 欢迎联系我们QQ:372900288 TEL:1391 ...
- 将类数组arguments转化成数组
一.将arguments对象绑定到slice方法上 二. 例子: //闭包 二次封装函数 求和 function partialUsingArguments(fn) { var args = Arra ...
- HackerRank "Flatland Space Stations"
A bit Greedy can achieve O(m) - the mid station between 2 adjacent cities has the longest distance w ...
- 处理ios webview 更新缓存本地css、js后webview缓存无法更新的问题
项目中需要使用app本地css.js,并且可以根据服务下发自动更新本地css.js.测试发现只要更新后的css或者js和更新前路径一致,webview加载的还是更新前的css.js.怀疑是webvie ...
- mysql删造成表死锁研究
现在互联网公司对于代码的管理越来越规范,一般都会有3个环境:开发环境,测试环境,正式环境.在开发环境进行开发,开发完成后将代码提交到测试环境进行测试,测试完毕后上线到正式环境. 今天在正式环境上遇到一 ...
- 深入理解Session与Cookie
Session与cookie的作用都是为了保持访问用户与后端服务器的交互状态. cookie通过把所有要保存的数据通过HTTP协议的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储 ...
- Hibernate4 获取SessionFactory
import org.hibernate.HibernateException; import org.hibernate.SessionFactory; import org.hibernate.c ...
- CentOS配置SVN服务器
系统环境:CentOS系统:CentOS 6.5 1.检查是否安装了低版本的SVN rpm -qa subversion 2.卸载旧版本SVN yum remove subversion 3.安装SV ...