主页 > 新闻资讯 > 大数据学习:Spark编程操作常用算子

大数据学习:Spark编程操作常用算子

作者:张老师 浏览次数: 2021-04-13 17:35
Spark的核心是RDD弹性分布式数据集,也正是得益于RDD的特性,才使得Spark在数据处理性能上的提升。Spark编程也是基于RDD去完成,今天的大数据学习分享,我们主要来讲讲Spark编程操作常用算子。

大数据学习:Spark编程操作常用算子

在进入到Spark编程学习之前,首先我们需要对RDD和DAG两个概念建立清晰的认识和理解:

RDD是Spark编程的核心,Spark API 的所有操作都是基于 RDD 的,RDD本质上提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,如果想要修改,只能创建新的RDD。

这样设计的目的,是为了减少网络及磁盘 IO 开销。

而DAG则是反应各个RDD间的依赖关系。

一次典型的RDD执行过程

①RDD读入外部数据源进行创建

②RDD经过一系列的转换(Transformation)操作,每一次都会产生不同的 RDD,供给下一个转换操作使用

③最后一个RDD经过“动作”操作进行转换,并输出到外部数据源,这一系列处理称为一个Lineage(血缘关系),即DAG拓扑排序的结果

Spark编程操作常用算子

编程操作分为四种类型,分别是创建,转换,控制和行动操作。这里分别介绍几个较为常用的算子。

【1】创建

并行化集合创建

val distData = sc.parallelize(Array(1,2,3,4))

外部存储创建:Spark支持将Hadoop支持的资源转化成RDD。

【2】转换

转换操作是延迟执行的

对单条Record的转换操作

filter(func):

sc.parallelize(Array(1,2,3,4)).filter(_> 1).collect()
res1: Array[Int] = Array(2, 3, 4)

map(func):每个元素执行func,输入:输出=1:1

sc.parallelize(Array(1,2,3,4)).map(x=>x+1).collect()
res2: Array[Int] = Array(2, 3, 4, 5)

flatMap(func):与map()相似,但输入:输出=1:N

sc.parallelize(Array(1,2,3,4)).flatMap(x=> Array(x+1,x+10)).collect()
res5: Array[Int] = Array(2, 11, 3, 12, 4, 13, 5, 14)

对分区shuffle的转换操作

reduceByKey():按key聚合,返回新的(K, Iterable)

sc.parallelize(Array( "a" -> 1,"a" ->2,"a" ->3, "b" -> 4)).reduceByKey((x,y)=> x+y).collect()
res1: Array[(String, Int)] = Array((a,6), (b,4))

groupByKey():针对(K, V)类型,返回(K, Iterable)类型的数据集

sc.parallelize(Array( "a" -> 1,"a" ->2, "b" -> 3))
res2: Array[(String, Iterable[Int])] = Array((a,CompactBuffer(1, 2)), (b,CompactBuffer(3)))

join:针对(K,V)类型,连接的依据是Key值

union:两个RDD合并

mapPartitions()

sc.parallelize(Array(1,2,3,4)).mapPartitions(x=> x.map(_+1)).collect()
res1: Array[Int] = Array(2, 3, 4, 5)

【3】控制

控制操作也可以理解为持久化,这主要是为了避免多次计算同一个RDD,默认情况下会把数据以序列化的形式缓存在JVM 的堆空间,主要包括下面三个方法:

cache()

persist()

checkpoint()

【4】 行动

count():返回元素个数

take(n):前n个元素,以数组形式返回

first():返回第一个元素

foreach(func):集合中每个元素执行func

collect():拉取rdd中所有数据到driver节点,转换成一个数组,如果数据量过大,会造成driver的OOM

关于大数据学习,Spark编程操作常用算子,以上就为大家做了详细的介绍了。Spark编程操作,其实本质上也是基于RDD的,所以对于RDD概念一定要学得透彻。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础就业班本月正在招生中,课程大纲及学习视频,可联系客服获取!
热点排行
推荐文章
立即申请>>