RDD触发算子的使用

count

复制代码
"""
返回值int
获取总条数
"""

take

复制代码
"""
返回前几条的数据
在driver的内存中存放------------只能少量 也就是说最终会放到同一个分区中
不会自动打印
"""

foreach

复制代码
"""
遍历每一条数据------打印

foreach 会对每个分区内的元素进行并行处理
结果的顺序可能每次都不一样,输出的具体顺序是不可预测的
要想真正排序 ,要么将分区减为1 要么collect
"""

saveAsTextFile

复制代码
"""
将数据保存在外部文件(hdfs)中
生成的文件和分区数有关

"""

collect

复制代码
"""
收集数据------将RDD转化成一个列表返回

这个RDD的数据一定不能过大,如果RDD数据量很大,导致Driver内存溢出
"""

first

复制代码
"""
获取RDD中的第一个值

"""

reduce

复制代码
"""
将RDD中的每个元素按照给定的聚合函数进行聚合,返回聚合的结果
类似sum()
"""

top

复制代码
"""
获取RDD中的最大的几个
会自动排序 ,可以指定排序规则
相当于 sortBy+take
"""
# 按照某一列进行排序
.top(10, lambda a: a[1])

不写的话 应该是按照key 值进行排序

takeOrdered

复制代码
"""
获取RDD中的最小的几个
自带排序 
"""

max

其中max和top均可以返回最大值,那么区别是什么

max:

1、只返回数据集中指定列或RDD中的最大值,即单一的最大元素。

2、并不对数据进行排序,通过分布式的计算方式查找数据集中的最大值

top

1、返回数据集中的前几个最大值,可以指定返回的数量。即使只需要一个最大值,也会以列表的形式返回。

2、对数据集进行局部排序,然后返回指定数量的最大值,因此在一定程度上会影响性能(特别是在数据量较大时)。top 方法默认返回结果是降序排列的。

复制代码
"""
获取最大值
触发算子
"""
rsRdd.max(lambda tupleA: tupleA[1])

min

复制代码
"""
获取最小值
触发算子
"""
rsRdd.min(lambda tupleA: tupleA[1])

mean

复制代码
"""
获取平均值
触发算子
"""
rsRdd.mean(lambda tupleA: tupleA[1])
相关推荐
互联网中的一颗神经元38 分钟前
04 — 安全撤销:改错了怎么退回去
大数据·安全·elasticsearch
Dxy123931021643 分钟前
Python 如何使用 MySQL 的事务
python·mysql
marvelyu4 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
ZCBUS实时计算5 小时前
金融证券实时数仓建设实践:轻量化实时计算平台落地,实现交易数据端到端秒级处理
大数据·数据库·数据仓库·金融·flink·dba·etl
今儿敲了吗5 小时前
Python ——第三方包
笔记·python
麒麟水手5 小时前
国产银河麒麟系统开发实录:跑通Streamlit,我踩过的6个坑
python
海上小飞龙5 小时前
Redis 分布式锁原理:从 SET NX EX 到 Redisson 看门狗
数据库·redis·分布式
麒麟水手5 小时前
麒麟系统部署检查清单:上线前30分钟,逐项自查这4类问题
python
圆奋奋5 小时前
FreeRTOS学习(三)- 任务调度模块
学习·开源·freertos
烟雨江南7855 小时前
2026汽车制造与新能源整车柔性产线Agentic-Workflow白皮书:跨APS_MES_ERP多智能体动态排产与装配容错实战
大数据·网络·人工智能·自动化·ai客服·企业agent