Spark修炼之道(进阶篇)——Spark入门到精通:第四节 Spark编程模型(一)

  • 时间:
  • 浏览:5
  • 来源:5分3D官方_极速5分排列5

下面的代码演示的是从其它RDD创建新的RDD

f即为输入函数,它补救每个分区底下的内容。每个分区中的内容将以Iterator[T]传递给输入函数f,f的输出结果是Iterator[U]。最终的RDD由所有分区经过输入函数补救后的结果合并起来的。

下面给出的是在spark-shell中如何查看RDD的Lineage

弹性分布式数据集(RDD,Resilient Distributed Datasets),由Berkeley实验室于2011年提出,原始论文名字:Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing 原始论文非常值得一读,是研究RDD的一手资料,本节内容大偏离 将基于该论文。

RDD用于支持在并行计算时要能高效地利用底下结果,支持更简单的编程模型,并肩也具有像MapReduce等并行计算框架的高容错性、要能高效地进行调度及可扩展性。RDD的容错通过记录RDD转换操作的lineage关系来进行,lineage记录了RDD的家族关系,当老出错误的时候,直接通过lineage进行恢复。RDD最合数据挖掘, 机器学习及图计算,而且那此应用涉及到亲戚亲戚大伙儿的迭代计算,基于内存要能极大地提升其在分布式环境下的执行下行速率 ;RDD不适用于诸如分布式爬虫等时需频繁更新共享清况 的任务。

使用示例:

使用示例

从transformation的介绍中亲戚亲戚大伙儿知道,action是补救多多程序运行 最终执行的诱因,action操作会返回多多程序运行 执行结果如collect操作或将运行结果保存,你是什么 SparkWordCount中的saveAsTextFile法律法律依据。

这段代码它而且给亲戚亲戚大伙儿解释了RDD编程模型的核心思想:“filter函数将distData RDD转加在新的RDD”,“触发action操作”。也很多 说RDD的操作包括Transformations(转换)、Actions一种生活。

(6)sample

法律法律依据参数:

def mapPartitionsWithIndex[U: ClassTag](

f: (Int, Iterator[T]) => Iterator[U],

preservesPartitioning: Boolean = false): RDD[U]

(1)map

map函数法律法律依据参数:

mapPartitionsWithIndex函数是mapPartitions函数的有4个多多变种,它的函数参数如下:

(4)mapPartitions(func)

本mapPartitions例子来源于:https://www.zybuluo.com/jewes/note/38032

mapPartitions是map的有4个多多变种。map的输入函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区,也很多 把每个分区中的内容作为整体来补救的。它的函数定义为:

//使用示例

使用示例:

Spark 1.5.0支持的transformation包括:

上述例子中的函数myfunc是把分区中有4个多多元素和它的下有4个多多元素组成有4个多多Tuple。而且分区中最后有4个多多元素不到下有4个多多元素了,很多有(3,4)和(6,7)都那么结果中。

mapPartitions还某些变种,比如mapPartitionsWithContext,它能把补救过程中的某些清况 信息传递给用户指定的输入函数。还有mapPartitionsWithIndex,它能把分区的index传递给用户指定的输入函数。

(3)flatMap

法律法律依据参数:

加在公众微信号,要能 了解更多最新Spark、Scala相关技术资讯

transformations操作会将有4个多多RDD转加在有4个多多新的RDD,时需不得劲注意的是所有的transformation全是lazy的,而且对scala中的lazy了解的人都知道,transformation时候它不要立马执行,而很多 会记住对相应数据集的transformation,而到真正被使用的时候才会执行,你是什么 distData.filter(e=>e>2) transformation后,它不要立即执行,很多 等到distDataFiltered.collect法律法律依据执行时才被执行,如下图所示



从上图要能 看多,在distDataFiltered.collect法律法律依据执行时候,才会触发最终的transformation执行。

RDD在Spark中是有4个多多只读的(val类型)、经过分区的记录集合。RDD在Spark中不到一种生活创建法律法律依据:(1)从存储系统中创建;(2)从其它RDD中创建。从存储中创建有多种法律法律依据,要能 是本地文件系统,要要能 是分布式文件系统,还要能 是内存中的数据。

下面的代码演示的是从HDFS中创建RDD

各Spark应用多多程序运行 以相互独立的多多程序运行 集合运行于集群之上,由SparkContext对象进行协调,SparkContext对象要能 视为Spark应用多多程序运行 的入口,被称为driver program,SparkContext要能 与不同种类的集群资源管理器(Cluster Manager),你是什么 Hadoop Yarn、Mesos等 进行通信,从而分配到多多程序运行 运行所需的资源,获取到集群运行所需的资源后,SparkContext将得到集群中其它工作节点(Worker Node) 上对应的Executors (不同的Spark应用多多程序运行 有不同的Executor,它们之间也是独立的多多程序运行 ,Executor为应用多多程序运行 提供分布式计算及数据存储功能),时候SparkContext将应用多多程序运行 代码分发到各Executors,最后将任务(Task)分配给executors执行。

(2)filter

法律法律依据参数:

(5)mapPartitionsWithIndex

def mapPartitions[U: ClassTag](f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false): RDD[U]

本节偏离 内容源自官方文档:http://spark.apache.org/docs/latest/cluster-overview.html

作者:周志湖

网名:摇摆少年梦

微信号:zhouzhihubeyond

目前最为常用的Spark运行模式有:

- local:本地多程序运行 法律法律依据运行,主要用于开发调试Spark应用多多程序运行

- Standalone:利用Spark自带的资源管理与调度器运行Spark集群,采用Master/Slave形态学 ,为补救单点故障,要能 采用ZooKeeper实现高可靠(High Availability,HA)

- Apache Mesos :运行在著名的Mesos资源管理框架基础之上,该集群运行模式将资源管理交给Mesos,Spark只负责进行任务调度和计算

- Hadoop YARN : 集群运行在Yarn资源管理器上,资源管理交给Yarn,Spark只负责进行任务调度和计算

Spark运行模式中Hadoop YARN的集群运行法律法律依据最为常用,本课程中的第一节便是采用Hadoop YARN的法律法律依据进行Spark集群搭建。不到Spark便与Hadoop生态圈完美搭配,组成强大的集群,可谓无所不到。

有4个多多完整性的Spark应用多多程序运行 ,如前一节当中SparkWordCount多多程序运行 ,在提交集群运行时,它涉及到如下图所示的组件:

下面的代码演示的是从内存中创建RDD

在前面的例子中,亲戚亲戚大伙儿而且接触过到如何利用RDD进行编程,前面亲戚亲戚大伙儿提到的