Spark常用算子

转换算子

value类型

算子名称 作用
Map映射 a->b
flatMap扁平化 [[a,b],[c,d]] -> [a,b,c,d] ,二维变一维
groupBy分组 [1,2,3,4] ->[[1,3],[2,4] ],一维变二维
filter过滤 [1,2,3,4] -> [2,4] 符合条件进入,不符合去掉
distinct去重 [1,1,2,2] -> [1,2] 去重过程中存在shuffle
sortBy排序 [1,3,2] -> [1,2,3] 排序

使用localhost:4040可以查看IDEA代码中算子的执行情况,可以使用Thread.sleep(10000)来睡眠一会,保证可以打开该网页。

key-value类型

算子名称 作用
mapValues 对value进行映射
groupByKey 对数据进行汇总,可以设置分区数量或分区器
reduceByKey 对数据进行汇总计算,底层会打散重分区,增加了预聚合
sortByKey 对Key进行排序,底层是Range分区
reduceByKey不能用于减法和除法运算,只能用于加法和乘法计算。

两种分区

  1. Hash分区:极端情况有可能导致数据倾斜,适合用于聚合。
  2. Range分区:尽量保证每个分区中数据量均匀,适合用于排序。使用Range分区器的算子有groupByKey, sortBy, cogroup.
相关推荐
Honmaple几秒前
从零搭建与使用OpenClaw:一站式AI自动化代理工具部署指南
服务器·人工智能
熊猫钓鱼>_>1 分钟前
深入理解Java堆栈:从原理到面试实战
java·开发语言·面试·职场和发展·面向对象·堆栈·oop
小徐敲java2 分钟前
视频推流服务器与FFmpeg 安装配置
服务器·ffmpeg·音视频
cici158745 分钟前
基于MATLAB的非正交多址(NOMA)系统协同中继技术提升小区边缘用户性能实现
java·服务器·matlab
bigdata-rookie7 分钟前
Starrocks 数据模型
java·前端·javascript
蜡笔小炘16 分钟前
LVS -- 部署NAT模式集群案例
linux·运维·服务器·lvs
翼龙云_cloud16 分钟前
阿里云渠道商:如何优化阿里云弹性伸缩的性能?
服务器·阿里云·云计算
爱敲代码的憨仔16 分钟前
Spring-AOP
java·后端·spring
风景的人生18 分钟前
request请求的@RequestParm标注的参数也需要放在请求路径后
java
短剑重铸之日19 分钟前
《设计模式》第四篇:观察者模式
java·后端·观察者模式·设计模式