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.
相关推荐
Brilliantwxx2 分钟前
【Linux】 软件包管理器(yum)+ Vim使用
linux·运维·服务器·开发语言·编辑器·vim
雪的季节6 分钟前
Python 线程同步与异步编程 全解析
java·开发语言
吃饱了得干活18 分钟前
缓存与数据库一致性:从理论到实战
java·后端·面试
^yi22 分钟前
【Linux系统编程】对操作系统的理解
linux·运维·服务器·操作系统·系统调用·os
520拼好饭被践踏25 分钟前
JAVA+Agent学习day22
java·开发语言·后端·学习
笨蛋不要掉眼泪36 分钟前
Java虚拟机:堆的参数配置
java·开发语言·jvm
Kina_C38 分钟前
LVS-NAT 负载均衡实验从环境搭建到规则持久化
linux·运维·服务器·负载均衡·lvs
霸道流氓气质39 分钟前
SpringBoot中使用JasperReports 报表引擎 — 介绍、原理与使用实践
java·spring boot·后端
花生了什么事o44 分钟前
DDD 分层架构:六层分层架构
java·架构·ddd
Y3815326621 小时前
3 种 SERP 数据处理方案对比:流式 / 批处理 / 缓存
java·spring·缓存