Spark-Core Project

news2025/6/5 5:47:33

 

RDD转换算子总结

RDD转换算子分为Value类型、双Value类型和Key - Value类型。

 

1、Value类型

 

  1. map:对数据逐条映射转换,可改变数据类型或值。如 dataRDD.map(num => num * 2

 

 
 


运行结果:

 

 

2)mapPartitions:以分区为单位处理数据,可过滤数据。与 map 相比,它是批处理,性能高但可能占内存。如 dataRDD.mapPartitions(datas => datas.filter(_ == 2)) 。

运行结果:

 

 
 

 

 

3)mapPartitionsWithIndex:类似 mapPartitions ,处理时可获取分区索引。

 

4)flatMap:先扁平化数据再映射,会将输入对象映射为集合后连成大集合。如 dataRDD.flatMap(list => list)  。

 

 
 


运行结果:

 

 

5)glom:将分区数据转为内存数组,分区不变。

运行结果:

6)groupBy:按规则分组数据,会打乱重组(shuffle)。


运行结果:

 

7)filter:按规则筛选数据,可能导致数据倾斜。

 
 


运行结果:

 

 

8)sample:按规则抽取数据,有放回(泊松算法)或不放回(伯努利算法)。

运行结果:

 

9)distinct:去重数据,可指定分区数。

运行结果:

10)coalesce:缩减分区,提高小数据集效率。

 

 
 


运行结果:

 

 

 

11)repartition:内部执行 coalesce ,默认 shuffle=true ,可改变分区数。

运行结果:

12)sortBy:排序数据,可指定排序规则和分区数。

 

 
 


运算结果:

 

 

 

2、双Value类型

 

13)intersection:求两个RDD交集。

 

 

 
 


运行结果:

 

 

14)union:求并集,重复数据不去重。

 

 

 
 


运行结果:

 

 

15)subtract:求差集,保留源RDD非重复元素。

 

 
 


运行结果:

 

 

16)zip:将两个RDD元素按位置合并为键值对。

 

运行结果:

 

3. Key - Value类型

 

17)partitionBy:按指定 Partitioner 重新分区,默认分区器为HashPartitioner 。

 

运行结果:

 

18)groupByKey:按 key 分组 value 。

运行结果:

19) reduceByKey:按 key 聚合 value ,可预聚合,性能高。

运行结果:

20)aggregateByKey:分区内和分区间按不同规则计算。


 

运行结果:

21)foldByKey:分区内和分区间计算规则相同时,是 aggregateByKey 的简化。

 

运行结果:

22)combineByKey:通用聚集函数,可改变数据结构。

 

运行结果:

 

23)sortByKey:按 key 排序, key 需实现 Ordered 接口。

 

 
 


 

 

运行结果:

 

24)  join:连接两个RDD中相同 key 的元素。

运行结果:

 

25)  leftOuterJoin:类似SQL左外连接。

运行结果:

 

26)  cogroup:将相同 key 的元素分组到一个RDD中。

运行结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2397079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wireshark 使用教程:让抓包不再神秘

一、什么是 tshark? tshark 是 Wireshark 的命令行版本,支持几乎所有 Wireshark 的核心功能。它可以用来: 抓包并保存为 pcap 文件 实时显示数据包信息 提取指定字段进行分析 配合 shell 脚本完成自动化任务 二、安装与验证 Kali Linux…

JWT安全:接收无签名令牌.【签名算法设置为none绕过验证】

JWT安全:假密钥【签名随便写实现越权绕过.】 JSON Web 令牌 (JWT)是一种在系统之间发送加密签名 JSON 数据的标准化格式。理论上,它们可以包含任何类型的数据,但最常用于在身份验证、会话处理和访问控制机制中发送有关用户的信息(“声明”)。…

白银价格查询接口如何用Java进行调用?

一、什么是白银价格查询接口? 它聚焦于上海黄金交易所、上海期货交易所等权威市场,精准提供白银价格行情数据,助力用户实时把握市场脉搏,做出明智的投资决策。 二、应用场景 分析软件:金融类平台可以集成本接口&…

FreeBSD 14.3 候选版本附带 Docker 镜像和关键修复

新的月份已经到来,FreeBSD 14.3 候选发布版 1 现已开放测试,它带来了一些您可能会觉得有用的更新,特别是如果您对Docker容器感兴趣的话。RC1 版本中一个非常受欢迎的改进是,FreeBSD 项目已开始将官方开放容器计划 (OCI) 镜像发布到…

「Java教案」算术运算符与表达式

课程目标 1.知识目标 能够区分Java运算符的种类,例如,算术、赋值、关系、逻辑、位运算等。能够区分Java各类运算符的功能和使用场景。能够根据表达式的构成和计算规则,写出正确的表达式。能够根据运算符优先级与结合性&#xff…

论文写作核心要点

不要只读论文里的motivation和method 论文里的图表和统计特征 在论文里找到具有统计意义的东西,那么在语料里也肯定遵循这样的规律,我们就能用机器学习的方法, 我们再用不同方法解决,哪种方法好,就用哪种 实验分析 …

[java]eclipse中windowbuilder插件在线安装

目录 一、打开eclipse 二、打开插件市场 三、输入windowbuilder,点击install 四、进入安装界面 五、勾选我同意... 重启即可 一、打开eclipse 二、打开插件市场 三、输入windowbuilder,点击install 四、进入安装界面 五、勾选我同意... 重启即可

Ubuntu20.04服务器开启路由转发让局域网内其他电脑通过该服务器连接外网

要让你的 Ubuntu作为路由器,通过 Wi-Fi 上网,并给连接到 UsbNetwork 的设备提供网络,需要做以下配置: 1. 网络拓扑 [互联网] ← (Wi-Fi, wlo1) → [Ubuntu] ← (USB网络/USB以太网, UsbNetwork) → [设备]Ubuntu: Wi-…

【Oracle】TCL语言

个人主页:Guiat 归属专栏:Oracle 文章目录 1. TCL概述1.1 什么是TCL?1.2 TCL的核心功能 2. 事务基础概念2.1 事务的ACID特性2.2 事务的生命周期 3. COMMIT语句详解3.1 COMMIT基础语法3.2 自动提交与手动提交3.3 提交性能优化 4. ROLLBACK语句…

Windows | 总误按Num Lock?修改注册表永久禁用Numlk键使小键盘一直输入数字

先说需修改注册表的位置与键值 路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\ 二进制键:Scancode Map 键值: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 45 00 00 00 00 00 00 00 00 00如下图: …

2.RV1126-OPENCV Mat理解和AT函数

一.Mat概念 Mat 是整个图像存储的核心也是所有图像处理的最基础的类,Mat 主要存储图像的矩阵类型,包括向量、矩阵、灰度或者彩色图像等等。Mat由两部分组成:矩阵头,矩阵数据。矩阵头是存储图像的长度、宽度、色彩信息等头部信息&a…

unidbg patch 初探 微博deviceId 案例

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 看了b站迷人瑞信那个由于是…

循序渐进 Android Binder(一):IPC 基本概念和 AIDL 跨进程通信的简单实例

Binder 给人的第一印象是”捆绑者“,即将两个需要建立关系的事物用某些工具束缚在一起。在 Android 中,Binder 是一种高效的跨进程通信(IPC)机制,它将可以将运行在不同进程中的组件进行绑定,以实现彼此通信…

网络安全之Web渗透加解密

项目基本使用 准备环境:node.js python chrome npm install chrome-remote-interface pip install playwright playwright install chromium pip install mitmproxy ............... 第一步启动cdp.js。 第二步使用python .\cdp_load.py vue_demo,连…

【LeetCode 题解】两数之和(C++/Python 双解法):从语法到算法的全面解析

【LeetCode题解】两数之和(C/Python双解法):从语法到算法的全面解析 一、题目描述 题目链接:1. 两数之和 难度:简单 要求:给定一个整数数组 nums 和一个整数目标值 target,在数组中找出两个数…

【机器学习基础】机器学习入门核心算法:集成学习(Ensemble Learning)

机器学习入门核心算法:集成学习(Ensemble Learning) 1. 算法逻辑核心逻辑: 2. 算法原理与数学推导2.1 Bagging(Bootstrap Aggregating)2.2 Boosting2.3 Stacking 3. 模型评估评估指标基学习器选择策略 4. 应…

【TMS570LC4357】之相关驱动开发学习记录1

系列文章目录 【TMS570LC4357】之工程创建 【TMS570LC4357】之工程配置修改 【TMS570LC4357】之HALCOGEN使用 【TMS570LC4357】之相关问题及解决 ——————————————————— 前言 记录笔者在第一次使用TMS570过程中对外设驱动的一些学习碎片。 1. RTI 1.1 添…

RAG入门 - Retriever(1)

文章目录 环境准备知识库加载1. Retriever - embeddings 🗂️1.1 将文档拆分为chunks1.2 词嵌入1.3 构建向量数据库Nearest Neighbor search algorithm (最近邻搜索算法)Distances (距离)点积(Dot Product&…

pyspark实践

1。pyspark是什么 PySpark 是 Apache Spark 的官方 Python 接口,它使得 Python 开发者能够访问 Spark 的核心功能,如: Spark SQL:用于执行 SQL 查询以及读取数据的库,支持多种数据格式和存储系统。py.qizhen.xyz Data…

【深度学习新浪潮】多模态模型如何处理任意分辨率输入?

多模态模型处理任意分辨率输入的能力主要依赖于架构设计的灵活性和预处理技术的结合。以下是核心方法及技术细节: 一、图像模态的分辨率处理 1. 基于Transformer的可变补丁划分(ViT架构) 补丁化(Patch Embedding): 将图像分割为固定大小的补丁(如1616或3232像素),不…