Spark常用算子介绍

首先介绍下spark算子总共分为2大类:

Transformation 变换/转换算子  和   Action执行算子

Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。

Transformation

map 可以进行许多操作

filter 过滤算子

flatMap 操作完之后再压平 是map跟flatten的结合使用

groupByKey 根据key分组 不会计算单词数量

reduceByKey(_ + _) 根据key分组 会计算单词数量

Join //连接,    (K,V).join(K,W) =>(K,(V,W))

cogroup 协分组 (K,V).cogroup.(k,w) =>(K,CompactBuffer(V,W))

certesian 笛卡儿积

pipe 管线 linux有用 windows有bug

sc.parallelize(Array("/usr/local/spark/bin")).pipe("ls").collect

Coalesce 减少分区

sortByKey 根据key排序 默认升序 后面写false 则降序

val rdd11 = rdd1.coalesce(2) 只能较少分区

val rdd11 = rdd1.repartition(2) 可以减少还可以增加

mapPartitions map端partitions 处理一个区的数据(map处理一行)

Distinct 去重算子 牵扯到 uv pv (详细地址:https://blog.csdn.net/qq_32736999/article/details/83756004

Action算子

collect() //收集rdd元素形成数组.

count() //统计rdd元素的个数

reduce() //聚合,返回一个值。

first //取出第一个元素take(1)

take //take(3) 取出前3个

saveAsTextFile(path) //保存到文件

saveAsSequenceFile(path) //保存成序列文件

saveAsObjectFile(path) (Java and Scala)

countByKey() //按照key,统计每个key下value的个数

能触发Shuffle的算子是shuffle算子

大概有:去重、排序、聚合、重分区、集合操作和表操作

如:reduceByKey()、join、sortBy、groupByKey、collect、distinct、repatition、Coalesce 等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值