栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark计算框架(基础RDD行动和变换)

Spark计算框架(基础RDD行动和变换)

一、概念

RDD:弹性分布式数据集,简单来说就是元素的分布式集合,在Spark中,所有的工作都被表达为创建新的RDD,对已存在的RDD做变换,或者对RDD调用行动来计算得到一个结果

变换:指对RDD进行一次操作,生成另外一个RDD的过程

行动:指对RDD进行一次操作,返回一个计算结果的过程

二、变换算子

针对一个包含{1, 2, 3, 3}的RDD进行基本的变换

创建该RDD:

val rdd = sc.parallelize(Array(1, 2, 3, 3))
函数名目的示例结果
map()应用函数到RDD中的每一个元素,并返回一个结果RDDrdd.map(x=>x+1){2, 3, 4, 4}
flatMap()应用到RDD中的每一个元素,并且返回一个返回迭代器中内容的RDD, 一般用于提取单词rdd.flatMap(_.to(3)){1, 2, 3, 2, 3, 3, 3}
filter()返回由仅通过传入filter()的条件的元素组成的RDDrdd.filter(_ > 2){3, 3}
distinct()去重rdd.distinct(){1, 2, 3}
Sample(withReplacement, fraction, [seed])RDD 采样数据,可替换rdd.sample(false, 0.5)Nondeterministic

替换采样:抽取一次之后放回数据,非替换采样:抽取一次之后不放回,后续不会再抽出该条数据

针对包含{1, 2, 3} 和 {3, 4, 5} 的两个RDD 进行变换

创建以上两个RDD:

val rdd = sc.parallelize(Array(1, 2, 3))
val other = sc.parallelize(Array(3, 4, 5))
函数名目的示例结果
union()生成一个新的RDD包含两个RDD当中的所有元素rdd.union(other){1, 2, 3, 3, 4, 5}
intersection()生成一个RDD包含两个RDD中都有的元素rdd.intersection(other){3}
subtract()从一个RDD中去掉另一个RDD中存在的元素rdd.subtract(other){1, 2}
cartesian()生成两个RDD的笛卡尔积的RDDrdd.cartesian(other){(1,3), (1,4), (1,5), (2,3), (2,4), (2,5), (3,3), (3,4), (3,5)}
三、行动算子

对包含{1, 2, 3, 3}的RDD执行动作

函数名目的示例结果
collect()返回RDD中的所有元素rdd.collect(){1, 2, 3, 3}
count()返回RDD当中的元素个数rdd.count()4
countByValue()返回RDD中每个元素出现的次数rdd.countByValue(){(1, 1), (2, 1), (3, 2)}
take(num)返回RDD中num个元素rdd.take(2){1, 2}
top(num)返回RDD当中前num个元素rdd.top(2){3, 3}
takeSample(withReplacement, num, [seed])随机返回RDD中的num个元素rdd.takeSample(false, 1)Nondeterministic
reduce(func)并行合并RDD中的元素rdd.reduce((x, y) => x + y)9
fold(zeroValue)(func)提供一个初始值,并根据函数合并RDD当中的元素(首先合并每个分区内的元素,然后合并分区间的元素)rdd.fold(3)((x, y) => x + y)8分区值为36, 1个分区值为15
aggregate(zeroValue)(seqOp, combOp)提供一个初始值,和两个函数,第一个函数用于分区内元素合并,第二个函数用于分区间元素合并rdd.aggregate((0, 0))((x, y) => (x._1 + y, x._2 + 1), (x, y) => (x._1 + y._1, x._2 + y._2))(9, 4)
foreach(func)对RDD中的每个元素应用函数funcrdd.foreach(func)Nothing
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号