10.2 spark算子介绍

算子:

转换算子:RDD进行内部转化,不消耗资源

行动算子:执行job,消耗资源,要看到执行结果必须要行动算子

控制算子

转换算子

map 遍历的单位是每一条记录 , 返回值是一条记录

flatMap 遍历的单位也是每一条记录,但是返回值可以是多条

filter 过滤算子 true为保留 false 过滤掉

mapPartitions 遍历的单位是每一个分区,每一个分区的数据会一次性加载一个集合里面

mapPartitionsWithIndex遍历的单位是每一个分区同时也能拿到分区的编号

扫描二维码关注公众号,回复: 2415802 查看本文章

join 将两个KV格式的RDD,根据K相同来关联

leftOuterJoin 左外连接

rightOuterJoin 右外连接

fullOuterJoin 全连接

groupByKey 必须作用在KV格式的RDD上,根据key分组

reduceByKey 必须作用在KV格式的RDD上,先根据key进行分组,然后对组内的数据按照传入的聚合函数进行聚合操作

distinct:将RDD里面相同的元素去掉

就是map((_,1)).groupByKey.map(_._1)

sortBy算子 可以指定是按照key排序还是按照value排序

coalesce() 减少分区

repartition(numpartions) = coalesce(numpartions,true)

cogroup fullOuterjoin+groupByKey

zip 算子 他会将两个非KV格式的RDD变成一个KV格式的RDD

zipWithIndex 算子 会将非KV格式的RDD 变成一个KV格式的RDD

K:当前的元素

V:当前的元素所在RDD的索引值

取两个RDD的合集:union

差集:subtract

交集:intersection

glom : 会将每一个分区里面元素合并到一个数组里面

randomSplit

combineByKey:

createCombiner 对每一个分区中每一个分组进行初始化

mergeValue,根据传入的聚合函数,对每一个分区中每一个分组进行聚合

mergeCombiners 在reduce 端的大聚合

行动算子

collect

take(n):取RDD的前n个元素

first = take(1)

foreach

foreachPartition

countByKey

控制算子

cache 默认情况下将RDD放入到内存中(懒执行)

rdd1 = rdd1.cache //将数据写入到内存中

persist 可以手动指定持久化级别

cache和persist的返回值必须赋给一个变量

cache和persist不能立即紧跟action类算子

持久化的单位是一个partition

checkpoint 设置检查点(懒执行),

可以将RDD的数据持久化到hdfs上

可以切断RDD的依赖关系

使用方法:

sc.setCheckpointDir("path") //设置数据写入位置

rdd.checkpoint() //设置检查点,把rdd数据写入path路径下


转换算子和行动算子:

猜你喜欢

转载自blog.csdn.net/u011418530/article/details/81109895