Spark Core(二)

Spark-Core编程(二)

RDD转换算子

RDD 根据数据处理方式的不同将算子整体上分为 Value 类型、双 Value 类型和 Key-Value 类型

Value类型

1)map

将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换

实例:

运行结果:

2)mapPartitions

将待处理的数据以分区为单位发送到计算节点进行处理,这里的处理是指可以进行任意的处理,哪怕是过滤数据

实例:

运行结果:

map和mapPartitions 的区别

1.Map 算子是分区内一个数据一个数据的执行,类似于串行操作。而 mapPartitions 算子是以分区为单位进行批处理操作

2.Map 算子主要目的将数据源中的数据进行转换和改变。但是不会减少或增多数据。MapPartitions 算子需要传递一个迭代器,返回一个迭代器,没有要求的元素的个数保持不变,所以可以增加或减少数据

3.Map 算子因为类似于串行操作,所以性能比较低,而是 mapPartitions 算子类似于批处理,所以性能较高。但是 mapPartitions 算子会长时间占用内存,那么这样会导致内存可能不够用,出现内存溢出的错误。所以在内存有限的情况下,不推荐使用

3)mapPartitionsWithIndex

将待处理的数据以分区为单位发送到计算节点进行处理,这里的处理是指可以进行任意的处理,哪怕是过滤数据,在处理时同时可以获取当前分区索引

4)flatMap

将处理的数据进行扁平化后再进行映射处理,所以算子也称之为扁平映射

实例:

运行结果:

map和flatMap的区别:

map会将每一条输入数据映射为一个新对象

flatMap包含两个操作:会将每一个输入对象输入映射为一个新集合,然后把这些新集合连成一个大集合

5)glom

将同一个分区的数据直接转换为相同类型的内存数组进行处理,分区不变

实例:

运行结果:

6)groupBy

将数据根据指定的规则进行分组, 分区默认不变,但是数据会被打乱重新组合,我们将这样的操作称之为 shuffle。极限情况下,数据可能被分在同一个分区中

实例:

运行结果:

注:一个组的数据在一个分区中,但是并不是说一个分区中只有一个组

7)filter

将数据根据指定的规则进行筛选过滤,符合规则的数据保留,不符合规则的数据丢弃。

当数据进行筛选过滤后,分区不变,但是分区内的数据可能不均衡,生产环境下,可能会出

现数据倾斜

实例:

运行结果:

8)sample

根据指定的规则从数据集中抽取数据

实例

1.伯努利算法(抽取数据不放回

2.泊松算法(抽取数据放回

运行结果:

9)distinct

将数据集中重复的数据去重

实例:

运行结果:

10)coalesce

根据数据量缩减分区,用于大数据集过滤后,提高小数据集的执行效率

当 spark 程序中,存在过多的小任务的时候,可以通过 coalesce 方法,收缩合并分区,减少分区的个数,减小任务调度成本

实例:

运行结果:

11)repartition

该操作内部其实执行的是 coalesce 操作,参数 shuffle 的默认值为 true。无论是将分区数多的RDD 转换为分区数少的 RDD,还是将分区数少的 RDD 转换为分区数多的 RDD,repartition操作都可以完成,因为无论如何都会经 shuffle 过程

实例:

运行结果:

12sortBy

该操作用于排序数据。在排序之前,可以将数据通过 f 函数进行处理,之后按照 f 函数处理的结果进行排序,默认为升序排列。排序后新产生的 RDD 的分区数与原 RDD 的分区数一致。中间存在 shuffle 的过程

实例:

运行结果:

双Value类型

13) intersection

对源 RDD 和参数 RDD 求交集后返回一个新的 RDD

实例:

运行结果:

14) union

对源 RDD 和参数 RDD 求并集后返回一个新的 RDD(重复数据不会去重)

实例

运行结果:

15) subtract

以源 RDD 元素为主,去除两个 RDD 中重复元素,将源RDD的其他元素保留下来。(求差集)

实例:

运行结果:

16) zip

将两个 RDD 中的元素,以键值对的形式进行合并。其中,键值对中的 Key 为第 1 个 RDD

中的元素,Value 为第 2 个 RDD 中的相同位置的元素

实例:

运行结果:

Key-Value类型:

17) partitionBy

将数据按照指定 Partitioner 重新进行分区。Spark 默认的分区器是 HashPartitioner

实例:

运行结果:

18) groupByKey

将数据源的数据根据 key 对 value 进行分组

实例:

运行结果:

19) reduceByKey

可以将数据按照相同的 Key 对 Value 进行聚合

实例:

运行结果:

20) aggregateByKey

将数据根据不同的规则进行分区内计算和分区间计算

实例:

运行结果:

21) foldByKey

当分区内计算规则和分区间计算规则相同时,aggregateByKey 就可以简化为 foldByKey

实例

运行结果:

22) combineByKey

最通用的对 key-value 型 rdd 进行聚集操作的聚集函数(aggregation function)。类似于

aggregate(),combineByKey()允许用户返回值的类型与输入不一致

实例:

运行结果:

23) sortByKey

在一个(K,V)的 RDD 上调用,K 必须实现 Ordered 接口(特质),返回一个按照 key 进行排序

实例

运行结果:

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

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

相关文章

C#打开文件及目录脚本

如果每天开始工作前都要做一些准备工作,比如打开文件或文件夹,我们可以使用代码一键完成。 using System.Diagnostics; using System.IO;namespace OpenFile {internal class Program{static void Main(string[] args){Console.WriteLine("Hello, …

Python生成exe

其中的 -w 参数是 PyInstaller 用于窗口模式(Windowed mode),它会关闭命令行窗口的输出,这通常用于 图形界面程序(GUI),比如使用 PyQt6, Tkinter, PySide6 等。 所以: 如果你在没有…

【大模型微调】如何解决llamaFactory微调效果与vllm部署效果不一致如何解决

以下个人没整理太全 一、生成式语言模型的对话模板介绍 使用Qwen/Qwen1.5-0.5B-Chat训练 对话模板不一样。回答的内容就会不一样。 我们可以看到例如qwen模型的tokenizer_config.json文件,就可以看到对话模板,一般同系列的模型,模板基本都…

Linux网络编程——详解网络层IP协议、网段划分、路由

目录 一、前言 二、IP协议的认识 1、什么是IP协议? 2、IP协议报头 三、网段划分 1、初步认识IP与路由 2、IP地址 I、DHCP动态主机配置协议 3、IP地址的划分 I、CIDR设计 II、子网数目的计算 III、子网掩码的确定 四、特殊的IP地址 五、IP地址的数量限…

ansible+docker+docker-compose快速部署4节点高可用minio集群

目录 github项目地址 示例服务器列表 安装前 修改变量文件group_vars/all.yml 修改ansible主机清单 修改setup.sh安装脚本 用法演示 安装后验证 github项目地址 https://github.com/sulibao/ansible_minio_cluster.git 示例服务器列表 安装前 修改变量文件group_var…

MySql主从相关概念

想象一下,你的业务飞速增长,用户请求如潮水般涌来,突然数据库主库宕机,数据丢失,服务瘫痪——这简直是开发者的噩梦!MySQL主从复制就像一张安全网,通过主库写、从库读的协作模式,不仅…

机械臂只有位置信息是否可以进行手眼标定?

平常我在做手眼标定时,一般都是通过OpenCV的cv::calibrateHandEye函数进行求解,需要输入多组不同的机械臂位姿。今天遇到了一款舵机机器人,只能获取位置,得不到姿态信息,想着那就把姿态都设为0,结果求不出来…

华为数字芯片机考2025合集2已校正

单选 1. 题目内容 关于亚稳态的描述错误的是( )。 1. 解题步骤 1.1 理解亚稳态(Metastability)的核心特性 亚稳态是指触发器无法在指定时间内稳定输出有效逻辑电平(0或1)的状态,其关键特点…

T-Box车载系统介绍及其应用

定义 T-Box汽车系统,全称为Telematics - BOX,也常简称为车载T - BOX,是汽车智能系统及车联网系统中的核心组成部分,是安装在车辆上的一种高科技远程信息处理器。 工作原理 T-Box的核心功能主要通过MPU和MCU实现。MPU负责应用程序功…

[redis进阶一]redis的持久化(1)RDB篇章

目录 一 认识持久化 (1)先看总结图 (2)什么是持久化? (3)redis是怎么进行持久化的呢 (4)简单分析一下RDB持久化和AOF持久化的不同 二 RDB持久化 (1)RDB的触发机制 (2)RDB的bgsave执行流程 (3)RDB文件的处理 (4)RDB的优缺点 (5)RDB效果演示板书 三 温习Linux文件…

uniapp日常总结--uniapp页面跳转方式

uniapp日常总结--uniapp页面跳转方式_uniapp 跳转-CSDN博客

《汽车电器与电子技术》实验报告

SRS系统结构原理与故障检测诊断 车辆上为什么要配安全气囊?——解析汽车被动安全的关键防线 一、安全气囊的核心作用:应对高速碰撞的“救命缓冲垫” 车辆在高速碰撞时(如正面碰撞、侧面碰撞),人体会因惯性以极高速度…

ffmpeg编解码器相关函数

文章目录 🎯 你需要理解的核心结构体:📦 常用函数及使用顺序(以解码为例)1️⃣ avcodec_find_decoder() / avcodec_find_encoder()2️⃣ avcodec_alloc_context3()3️⃣ avcodec_parameters_to_context()4️⃣ avcodec…

尚硅谷2019版Java网络编程笔记

第14章 网络编程 网络编程概述 什么是网络编程? 网络编程是通过网络协议实现计算机之间的数据交换。Java提供了强大的网络编程支持,隐藏了底层细节,开发者可以轻松实现网络通信。 网络编程的核心问题 如何定位网络上的主机:通…

解决【远程主机可能不符合 glibc 和 libstdc++ Vs code 服务器的先决条件】

可能是因为vscode不支持远程操作系统的版本,要么升级操作系统要么回退vscode版本 vscode回退1.97版本下载地址: 1.97版本VSCODE

forms+windows添加激活水印

formswindows添加激活水印 多语言水印文本,根据系统语言自动切换。水印显示在每个屏幕的右下角,位置动态调整。半透明灰色文字,微软雅黑字体。窗口无边框、置顶、透明背景,不干扰用户操作。支持多显示器。高DPI适配。 效果图&am…

LeetCode --- 444 周赛

题目列表 3507. 移除最小数对使数组有序 I 3508. 设计路由器 3509. 最大化交错和为 K 的子序列乘积 3510. 移除最小数对使数组有序 II 一、移除最小数对使数组有序 I & II 由于数组是给定的,所以本题的操作步骤是固定的,我们只要能快速模拟操作的过…

限流、降级、熔断、隔离?

在微服务架构中,服务限流、降级、熔断和隔离是保障系统高可用性的核心手段,但它们解决的问题和应用场景不同。以下是它们的区别、解决方案和实际案例的详细说明: 一、服务限流(Rate Limiting) 定义:通过限…

Day22 -php开发01--留言板+知识点(超全局变量 文件包含 数据库操作 第三方插件)

环境要求:php7.0.9 小皮 navicat phpstorm24.1 知识点:会写(留言板 留言板后台) 超全局变量 三方插件的使用 文件包含 1、开启小皮并利用navicat新建一个数据库 注意:本地的服务mysql关闭后 才可打开小皮。属…

制造一只电子喵 (qwen2.5:0.5b 微调 LoRA 使用 llama-factory)

AI (神经网络模型) 可以认为是计算机的一种新的 “编程” 方式. 为了充分利用计算机, 只学习传统的编程 (编程语言/代码) 是不够的, 我们还要掌握 AI. 本文以 qwen2.5 和 llama-factory 举栗, 介绍语言模型 (LLM) 的微调 (LoRA SFT). 为了方便上手, 此处选择使用小模型 (qwen2…