Spark算子笔记
作者:互联网
Spark算子
Transformation:
-
map:返回一个新的RDD,经过一个新的Fun函数转换之后组成
- RDD=sc.parallelize(rdd) rdd2 = rdd.map(fun)
-
mapPartitions:将数据分区为单位发送到计算节点(减少网络传输,可能造成内存不足)
-
mapPartitionsWithIndex:以分区发送处理并能获得当前分区索引号
-
flatmap:数据扁平化映射处理 返回一个序列(list)
-
glom:将数据转换为相同类型的数组进行处理
-
groupBy:根据指定规则分组,分区默认不变,但是数据会打乱重新组合(shuffle)
-
sample:根据指定的规则从数据集中抽取数
- rdd.sample(是否放回(True or False),重复抽到数据的期望(0-1),随机数种子)
-
distinct:数据集重复去重 经过 map->reduceBykey->map 过程
-
coalesce:根据数据量缩减分区,收缩合并分区(常用多转少同个stage 窄依赖)
-
reparation:内部函数执行coalesce操作,参数shuffle默认为true,多转少,少转多都可以(必定执行shullfe)
-
sortby : rdd.sortby(fun,升序(false),4) 返回与原分区一致,可能发生shuffle过程
-
intersection:求交集,union:求并集,
-
subtract:求差集,zip:键值对合并,
-
partitionBy:按照指定Partitioner重新分区,默认HashPartitioner
-
reduceByKey:将相同的key对Value进行聚合.
- 可传入函数rdd.reduceBykey(fun)
-
groupByKey:根据Key对Value进行分组
- 从shuffle角度来说
- reduceBykey和groupBykey都存在shuffle过程,
- reducebykey可以在分区前对相同的key进行预聚合,减少落盘数量
- groupbykey只是进行分组.
- 从功能角度来说
- groupbykey 只能进行分组不能进行聚合
- reducebykey 则可以进行分组聚合
- 从shuffle角度来说
-
aggregateByKey:根据不同的规则进行分区内计算和分区间计算 分区内是一个函数,分区间是一个函数
- rdd.(func(分区内),func(分区间))
-
foldbykey:当分区内计算规则和分区间计算规则相同时,aggregatebykey就简化为foldbykey(分区内和分区间逻辑一致)
-
combinebykey:rdd.(func(将数据进行结构转换),func(分区内的计算规则),func(分区间计算规则))
-
filter:返回一个新的RDD,返回经过fun函数计算后返回为True的输入元素
Action算子:
-
reduce:先聚合分区内数据,再聚合分区间数据
-
collect:以数组的形式返回数据集中所有的元素
-
count:返回元素的个数
-
first:返回rdd的第一个元素
-
take:返回Rdd的前N个元素的数组(类似于head -n)
-
takeOrdered:返回排序后的前n个数据的数组
-
aggregate:初始值分区内聚合,再和分区间进行聚合(rdd.aggregate(func(分区内),func(分区间)))
-
fold:aggregate简化版 分区内和分区间操作相同时可用
-
countbykey:统计每种key 的个数
-
save:saveAsTextFile,saveAsObjectFile,saveAsSequenceFile
-
foreach:分布式遍历rdd中的每一个元素,调用指定函数
标签:返回,区内,分区,笔记,rdd,func,算子,区间,Spark 来源: https://blog.csdn.net/m0_37872998/article/details/113480183