Spark RDD(三)
文章目录
- 1. 前言
- 2. 数据源
- 3. 调度器
- 4. RDD 编程接口
- 4.1 数据源自于集合的接口
- 4.2 数据源自于RDD的接口
- 4.3 数据源自于DataFrame的接口
- 5. RDD操作
1. 前言
RDD(Resilient Distributed Datasets)称为弹性分布式数据集,是Spark的运行时(Spark Runtime)内核实现,一个RDD对象中可以包含多个Partition,Spark应用运行时其每个Partition都对应着一个具体的任务,Spark基于RDD的内核实现主要涵盖了:数据源、调度器两部分。
2. 数据源
Spark处理的数据源可以是HDFS、Hive、HBase、S3、MySQL、Oracle等;处理之后的数据可被输出到上述存储器以及当前的控制台终端。
3. 调度器
Yarn:是Apache组织基于MapReduce算法的一套调度框架
Mesos:是Apache Spark默认的一套基于资源管理算法的调度框架
AWS:是亚马逊旗下的一套分布式系统资源调度框架
RDD其底层存储是按照分区(partition)方式进行的,可以使用SparkContext来创建,而SparkContext是Spark集群操作的入口。若是在Spark-Shell下操作,则Spark会自动创建一个基于已有配置的默认SparkContext对象,若是编写作业Jar,则须自己手动创建。
从RDD的实现逻辑来看,Spark操作RDD的过程类似于MapReduce操作HDFS的过程,但Spark在操作过程中会缓存在中间步骤的数据。Spark的Stage有以下几点缓存特征:
- 若Spark应用中的某个计算步骤非常耗时,则会缓存该步骤的计算结果。
- 若Spark应用的计算步骤链很长,则会增加对缓存步骤计算结果的频次。
- shuffle到其他节点上的数据会被shuffle到的目标节点缓存一次,以减少不必要的I/O次数。
- 从一个作业切换到下一个作业将会发生一次checkpoint操作。在此,checkpoint操作之前会缓存上一个作业的中间结果,checkpoint操作会将数据放置于磁盘文件系统中以保证数据不发生丢失。
4. RDD 编程接口
4.1 数据源自于集合的接口
- parallelize:将内存中的集合对象包装成Spark中的RDD对象
- createDataFrame:将内存中的集合对象包装成Spark中的DataFrame对象。
4.2 数据源自于RDD的接口
collect:将RDD对象转换成Java集合类型的List对象
createDataFrame:将RDD对象转换成DataFrame对象
4.3 数据源自于DataFrame的接口
- javaRDD:将DataFrame对象转换成Java API 中的RDD对象
- collectAsList:将DataFrame对象转换成Java API中的List集合对象
Spark的编程入口根据不同的子系统由不同的接口实现
3. SparkContext:基于RDD内核的原生接口实现,该接口是Spark其他入口的实现基础
4. SqlContext:基于SparkContext的一种SQL子系统实现,主要用于Spark SQL子系统中
5. StreamingContext:基于SparkContext的一种流式子系统实现,主要用于SparkContext子系统中
6. HiveContext:基于SqlContext的一种HQL子系统实现,主要用于底层存储为Hive的子系统中
5. RDD操作
Spark常用的算子函数
函数 | 作用 |
---|---|
textFile | 该函数返回一个RDD[String]类型的对象,仅执行数据抽象,并不立即执行数据的读取操作,数据的读取操作会延迟到执行action动作时才发生。因此textFile函数属于一种transformation动作。 |
count | 返回数据集中的记录数量,会启动一个action,action是指Spark会在底层启动作业或任务的计算操作。而转换仅实现数据的封装和抽象 |
map | 该函数将集合中的各个元素映射为指定的对象,然后返回一个新的RDD集合对象 |
flatMap | 该函数处理DataSet集合中的每一行,将每一行得到的集合元素释放到最外层集合中。此函数完成调用后将产生一个新的RDD对象结果集,该函数会深层次递归处理子级元素并将其提取到最外层的集合对象中去 |
reduceBykey | 该函数将数据集中元组的第一个元素作为Key进行分组,同时递归迭代和归并函数中的两个参数 |
sortByKey | 该函数根据数据集中元组的第一个参数进行排序处理,通过第二个参数指定并行度 |
saveAsTextFile | 该函数将数据集作为文本格式存储到参数指定的目录下 |
Spark RDD(三)相关推荐
- Spark RDD 论文详解(三)Spark 编程接口
前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...
- 学习笔记Spark(三)—— Spark架构及原理(spark架构、spark RDD)
一.Spark架构 1.1.基本组件 Cluster Manager 在standalone模式中即为Master主节点,控制整个集群,监控worker.在YARN模式中为资源管理器. Worker ...
- spark入门三(RDD基本运算)
1. RDD基本操作 val rdd1 = sc.parallelize(List(1,2,3,4,4)) 输出结果:rdd1: org.apache.spark.rdd.RDD[Int] = Par ...
- 2021年大数据Spark(三十二):SparkSQL的External DataSource
目录 External DataSource 数据源与格式 text 数据 json 数据 csv 数据 parquet 数据 jdbc 数据 加载/保存数据-API ...
- spark sql 本地调试_Spark精华问答|Spark的三种运行模式有何区别?
戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...
- Spark学习之Spark RDD算子
个人主页zicesun.com 这里,从源码的角度总结一下Spark RDD算子的用法. 单值型Transformation算子 map /*** Return a new RDD by applyi ...
- Spark RDD在Spark中的地位和作用如何?
Spark RDD的核心原理 1.Spark的核心概念是RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内 ...
- Spark rdd 介绍,和案例介绍
1.2.创建RDD 1)由一个已经存在的Scala集合创建. val rdd1 = sc.parallelize(Array(1,2,3,4,5,6,7,8)) 2)由外部存储系统的数据集创建,包括本 ...
- spark Rdd 操作transformaction和action等
为什么80%的码农都做不了架构师?>>> transformation是惰性的,只有action操作的时候,才会真正执行.spark有很多api,RDD的api只是spark的 ...
- 第二章 Spark RDD以及编程接口
第二章 Spark RDD以及编程接口 目录 Spark程序"Hello World" Spark RDD 创建操作 转换操作 控制操作 行动操作 注:学习<Spark大数据 ...
最新文章
- ContentType 列表
- python基础高频_面试题(一)
- 【Linux系统编程】进程间通信之共享内存
- [导入]C#优化字符串操作【月儿原创】
- beta冲刺总结那周余嘉熊掌将得队
- StreamWriter打开文件报错:”不支持给定路径的格式。“
- eclipse快捷键备忘
- 解决eclipse打开报错:failed to create the java virtual ma
- 2年CFA三级考试连过的我,全靠笔记多!(无金融背景)
- Codeigniter 升级
- 桌面管理 | Windows自带工具
- python爬虫:scrapy-redis分布式爬虫(详细版)
- 4 Kubernetes资源-Pod控制器(1)
- 小程序——picker组件
- 导图解文 从梦想到财富(28)如何成为顶尖高手
- 软件生存周期的图示——DO-178B/ED-12B学习笔记之九
- mysql初始数据库出错_安装MySQL提示initialize database(初始化数据库)错误解决方法...
- 基于Hadoop的基因组测序大数据分析平台研究
- vue实现浏览器代码在线编辑预览
- rust腐蚀几人组队_腐蚀怎么邀请组队