当前位置: 首页 > news >正文

Spark阶段学习总结

一、Spark 是什么

Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎,也可说是分布式内存迭代计算框架。

二、Spark 四大特点

速度快(内存计算)

易于使用

通用性强

运行方式多

三、与hadoop的核心差异

数据通信:Spark 基于内存,Hadoop 基于磁盘。

任务启动:Spark 用线程(快),Hadoop 用进程(慢)。

适用场景:Spark 适合迭代计算、交互式分析;Hadoop 适合大规模磁盘存储场景。

四、Spark 核心架构与部署模式

1. 运行架构

Master-Slave 模型:

Driver:负责任务调度、作业转换和状态跟踪(类似大脑)。

Executor:实际执行任务的工作节点,负责处理数据并缓存结果。

集群管理器:如 Standalone、YARN、Kubernetes,负责资源分配。

核心组件:DAG 调度器(拆分任务阶段)、任务调度器(分配任务到 Executor)。

2.部署模式

模式

特点

适用场景

Local

单节点运行,用于本地测试,无需集群环境

开发调试

Standalone

Spark 自带集群管理器,实现资源自调度,支持 Master-Worker 架构

轻量级集群,学习 / 测试

YARN

集成 Hadoop YARN 资源管理器,适合与 Hadoop 生态结合

生产环境,大数据处理

Kubernetes

基于容器编排,弹性扩缩容,适合云原生部署

大规模分布式生产环境

五、Spark Core:分布式计算基础

1. RDD(弹性分布式数据集)

核心特性:

弹性:支持内存 / 磁盘存储切换、容错恢复、动态分区。

分布式:数据分片存储在集群节点,支持并行计算。

不可变:通过转换(Transformation)生成新 RDD,保留操作 lineage(血缘关系)。

关键操作:

转换(Transformation):map、filter、reduceByKey、join(惰性执行,不立即计算)。

行动(Action):collect、count、saveAsTextFile(触发实际计算)。

依赖关系:

窄依赖:父 RDD 分区仅被一个子分区使用(如 map)。

宽依赖:父 RDD 分区被多个子分区使用(如 reduceByKey),触发 Shuffle。

2. 累加器与广播变量

累加器(Accumulator):分布式环境下的全局计数器,用于统计任务结果(如全局计数)。

广播变量(Broadcast Variable):将只读变量广播到所有 Executor,避免重复传输(如字典数据)。

3.行动算子

reduce:聚集 RDD 所有元素,先聚合分区内数据,再聚合分区间数据。

collect:在驱动程序中以数组形式返回数据集所有元素。

foreach:分布式遍历 RDD 元素并调用指定函数。

count:返回 RDD 中元素个数。

first:返回 RDD 中第一个元素。

take:返回 RDD 前 n 个元素组成的数组。

takeOrdered:返回 RDD 排序后的前 n 个元素组成的数组。

aggregate:分区数据通过初始值和分区内数据聚合,再和初始值进行分区间聚合

fold:折叠操作,是 aggregate 的简化版

countByKey:统计每种 key 的个数。

save 相关算子:将数据保存到不同格式文件

六、Spark SQL:结构化数据处理

1. 核心抽象

DataFrame:带 Schema 的二维表结构,支持 SQL 查询和 DSL 操作,底层为 Dataset[Row]。

Dataset:强类型数据集,结合 RDD 的灵活性和 SQL 的优化能力(如 Dataset[User])。

三者关系:

plaintext

RDD ↔ DataFrame ↔ Dataset 

(通过反射/编程方式转换,如 rdd.toDF()、df.as[User])

2. 数据操作

SQL 风格:注册临时表,使用 spark.sql("SELECT * FROM table") 执行查询。

DSL 风格:通过链式调用 df.filter($"age">18).groupBy("name").count() 实现逻辑。

数据源:支持 JSON、CSV、Parquet、JDBC(如 MySQL)、Hive 等,通用加载接口:

scala

spark.read.format("csv").option("header", "true").load("path")

七、Spark Streaming:实时流处理

1. 核心概念

DStream(离散化流):将实时流切割为多个时间片(如每秒一个批次),每个批次对应一个 RDD。

输入源:Kafka、Flume、TCP 套接字等,通过 socketTextStream 或 Kafka Direct API 读取数据。

DStream 本质是RDD 序列,每个时间区间数据对应一个 RDD。

2.特点:

易用性:支持 Java、Python、Scala 等语言,编程方式类似离线处理。

容错性:无需额外配置即可恢复丢失数据。

易整合性:可与 Spark 批处理结合,支持离线与实时处理统一代码。

3.关键操作

无状态转换:对每个批次独立处理(如实时 WordCount):

有状态转换:跨批次维护状态(如窗口聚合、updateStateByKey):

输出操作:将结果写入外部系统(如 MySQL、HDFS),通过 foreachRDD 实现。

八、Spark 生态与综合应用

1. 生态组件

MLlib:机器学习库,支持分类、回归、聚类等算法(如 LogisticRegression)。

GraphX:图计算框架,支持 Pregel 模型和图算法(如 PageRank)。

Structured Streaming:基于 DataFrame/Dataset 的流式处理,支持端到端 Exactly-Once 语义。

2. 典型应用场景

离线分析:使用 Spark Core/Spark SQL 处理批量数据(如日志分析、报表生成)。

实时分析:结合 Spark Streaming/Kafka 构建实时数据管道(如实时用户行为分析)。

机器学习:通过 MLlib 训练模型,结合 Spark SQL 处理特征数据。

图计算:利用 GraphX 分析社交网络、推荐系统中的关系数据。

相关文章:

Spark阶段学习总结

一、Spark 是什么 Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎,也可说是分布式内存迭代计算框架。 二、Spark 四大特点 速度快(内存计算) 易于使用 通用性强 运行方式多 三、与hadoop的核心差异 数据通信&#xf…...

统信操作系统使用默认yum源安装 Docker 的踩坑

事件 在使用 docker 运行 es 的时候,es 报错 ulimit 的值为1024,但是服务器已经设置成了65535。 排查结果 在装完 docker 之后发现 docker systemd 的启动命令引用了 /etc/sysconfig/docker 这个文件里面设定了 ulimit 为 1024 如下: [ro…...

HK1RBOX K8 RK3528 Via浏览器_插件_央视频的组合验证(失败)

文章目录 前言软件和设备信息过程方案插件代码 运行效果问题 前言 实践的结果为失败,设备性能不满足, 无法流畅播放视频 软件和设备信息 via浏览器, 版本4.9.1HK1RBOX K8 RK3528设备win10, 逍遥游安卓虚拟机(开发插件)央视频官网(不是cctv那个) 过程 方案 浏览器设置央视…...

XMOS直播声卡——可支持实时音频DSP处理的低延迟音频方案

对于游戏玩家和短视频直播工作者来说,声卡不可或缺。它除了能将计算设备的数字信号转换为声音信号,还能够提供各种逼真的或者定制的3D音效,提升游戏的沉浸感,特别是在大型开放联网游戏或射击游戏中,声音细节直接影响玩…...

DB2备份恢复操作文档及其注意事项

备份BACKUP 备份语法: 在线备份:db2 backup db MYDB online to /tmp/backup_db2_20250326 离线备份:db2 backup db MYDB to /tmp/backup_db2_20250326 需要注意,在执行在线备份时需要开启归档,即执行db2 get db cfg f…...

flask uri 怎么统一加前缀

在 Flask 中为 URI 统一添加前缀,可以通过多种方式实现,下面为你详细介绍几种常见的方法。 方法一:使用 Blueprint(推荐) Blueprint(蓝图)是 Flask 中组织路由的一种方式,它可以将…...

创建一个springboot的项目-简洁步骤

1. 打开IDEA,新建项目: 2. 设置项目的基本信息,其中注意jdk版本要与Java版本匹配,这里使用jdk17和java17 3. 选择SpringBoot版本,选择项目依赖(依赖也可以创建完项目后在pom文件中修改) 这里选…...

杭电oj(1008、1012、1013、1014、1017)题解

目录 ​编辑 1008 题目 思路 代码 1012 题目 思路 代码 1013 题目 思路 代码 1014 题目 思路 代码 1017 题目 思路 处理每组测试数据 计算满足条件的整数对数量 代码 1008 题目 思路 s a[0];:初始化 s 为数组的第一个元素,即电…...

VRRP与BFD在冗余设计中的核心区别:从“备用网关”到“毫秒级故障检测”

(本文完全由deepseek生成,特此声明) 在网络冗余设计中,VRRP(Virtual Router Redundancy Protocol)和BFD(Bidirectional Forwarding Detection)是两种关键协议,但它们的定…...

蓝桥杯 2. 确定字符串是否是另一个的排列

确定字符串是否是另一个的排列 原题目链接 题目描述 实现一个算法来识别一个字符串 str2 是否是另一个字符串 str1 的排列。 排列的解释如下:如果将 str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2,那么就说字符串 st…...

巧记英语四级单词 Unit6-上【晓艳老师版】

master n.雇主,主人 发音“骂死他”,骂死谁?雇主,主人masterpiece n.代表作,名著 主人的作品就是名著deputy n.副手 de表示往下,put放,往下放给副手appeal n.要求,呼吁 一再的要求剥…...

Java求职面试:从Spring Boot到微服务架构的全面解析

场景:互联网大厂Java面试 在某互联网大厂的面试房间里,面试官李老师正准备面试一位传说中的“水货程序员”——谢飞机。 第一轮提问:基础框架与工具 李老师: “谢飞机,你好。我们先聊聊Spring Boot吧。你能简单说说…...

来自B站AIGC科技官的“vLLM简介“视频截图

来自B站AIGC科技官的"vLLM简介"视频截图 0. 引言1. vLLM简介2. vLLM启动日志解析3. vLLM压力测试4.vLLM分布式推理 0. 引言 这篇文章主要记录了B站AIGC科技官的"vLLM简介"视频截图。 1. vLLM简介 笔记 From Up主: KV Cache的大小与序列长度的…...

CSS元素动画篇:基于当前位置的变换动画(四)

基于当前位置的变换动画(四) 前言透明效果类元素动画闪烁动画效果效果预览代码实现 淡入动画效果效果预览代码实现 淡出动画效果效果预览代码实现 结语 前言 CSS元素动画一般分为两种:一种是元素基于当前位置的变换动画,通过不明…...

如何打包一个QT 程序

如何打包一个QT 程序 找到 vcvarsall.bat 文件 打开 图中框选的命令行 输入命令 D:\MicrosoftVisualStdio2022\Community\VC\Auxiliary\Build\vcvarsall.bat x64命令行进入待打包的目录,只留下一个exe 文件即可 windeployqt 程序名打包完成...

【vLLM 学习】CPU 离线处理

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。 更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/ 源代码:vllm-project/vllm from vllm import LLM, SamplingParams# S…...

德州仪器(TI)—TDA4VM芯片详解—目录

写在前面 本系列文章主要讲解德州仪器(TI)TDA4VM芯片的相关知识,希望能帮助更多的同学认识和了解德州仪器(TI)TDA4VM芯片。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 本篇是此系列的目录…...

深入解读:2025 数字化转型管理 参考架构

《GB/T 45341—2025 数字化转型管理 参考架构》规定了数字化转型参考架构,涵盖主要视角、过程方法、发展阶段与水平档次。主要视角包含发展战略、业务创新转型等 5 个方面,明确任务及关联; 过程方法基于 “策划 — 支持、实施与运行 — 评测 …...

dma_buf学习记录之二核心接口

dma_buf学习记录之一基础知识-CSDN博客 本章学习linux\include\linux\dma-buf.h dma-buf.h 是 Linux 内核中用于实现 DMA 缓冲区共享框架的核心头文件。它定义了 dma-buf 子系统的主要数据结构和操作接口,允许设备驱动程序之间共享缓冲区,并支持异步硬件…...

java Optional

我还没用过java8的一些语法,有点老古董了,记录下Optional怎么用。 从源码看,Optional内部持有一个对象, 有一些api对这个对象进行判空处理。 静态方法of ,生成Optional对象, 但这个value不能为空&#…...

一文说清Token这个大模型中的数字乐高积木的作用

第一章:语言解码的底层逻辑 1.1 人类大脑的"偷懒智慧" 想象你走在街头,突然看到"星巴克"的招牌。你的大脑不会逐个分析"星""巴""克"三个字的笔画,而是瞬间将其识别为一个整体。这种将高…...

界面打印和重定向同时实现

在 Shell 中,若要让程序运行时既在界面打印输出内容,又将其重定向到文件,可使用tee命令达成此目的。tee命令的作用是从标准输入读取数据,然后将这些数据同时输出到标准输出(也就是屏幕)和指定的文件中。 基…...

最佳实践-HENGSHI SENSE 可视化创作中如何引入数据集市的成果

HENGSHI SENSE 提供了 中心化的数据集市管理 ,即数据集市的功能: 数据集市,支持层级结构的数据集市建立,按用户,用户组,组织架构授权,将数据分配到合适的人。支持统一的计算字段,计算…...

YOLO旋转检测模型简化

YOLO模型作为单阶段目标检测方法的代表,其已经应用在多个领域。 但要想将其部署到单片机上,其模型的大小需要受到极大的限制,而采用剪枝的方式模型体积下降效果有限,因此我们直接修改网络结构,将其进行删减&#xff0c…...

JavaScript之Webpack的模块加载机制

目录 目标 概述 IIFE语法分析 无参数的IIFE 有参数的IIFE Webpack语法分析 基本结构 缓存加载过的模块 ES5的格式 ES6的格式 目标 本文站在js逆向的角度总结知识,所以不讲解Webpack打包技术,只分析模块加载机制。 概述 Webpack Webpack是一个…...

深度解析如何将图像帧和音频片段特征高效存储到向量数据库 Milvus

在视频和音频分析领域,如何高效地处理和检索海量的多模态数据一直是一个重大挑战。本文将深度解析一种行之有效的解决方案:利用 OpenCV 和音频处理库提取数据特征后,将这些特征向量存储到 Milvus 向量数据库,以实现高效的相似性检…...

《Vue3学习手记6》

组件通信 props props 可以父传子&#xff0c;也可以子传父 1.父传子 子组件&#xff1a; <template><div class"child"><h2>子组件</h2><h3>礼物&#xff1a;{{ gift }}</h3><h3 v-show"zichan">父亲给我的…...

抗体品牌推荐

默克超级英雄抗体的披荆斩棘之路 自保罗埃尔利希1891年10月提出“Antikrper”一词后&#xff0c;科研人逐渐意识到抗体&#xff08;Antibody&#xff09;可以应用于各种类型的研究中。 从结构、功能、人体免疫应答……到基因治疗、药物研究&#xff0c;抗体的身影无处不在。值…...

生成式人工智能认证(GAI认证)有什么用?

在人工智能的浪潮中,我们正站在一个前所未有的十字路口。有人将生成式人工智能(Generative AI)视为技术迭代的工具,有人将其视为颠覆行业的“黑匣子”,而更少有人意识到:它正在重新定义人类与技术的共生关系。当AI不再局限于辅助人类,而是开始参与创作、决策甚至伦理判断…...

全新升级:BRAV-7601-T003高性能无风扇AI边缘计算系统,助力智能未来!

在数字化与智能化飞速发展的今天&#xff0c;AI边缘计算正成为各行各业的核心驱动力。BRAV-7601作为一款高性能无风扇AI边缘计算系统&#xff0c;凭借其强大的硬件配置与丰富的扩展能力&#xff0c;为车路协同、特种车辆车载、机器视觉、医疗影像等领域提供了卓越的解决方案。最…...

基于c++的LCA倍增法实现

原理就不写了&#xff0c;自己找b站视频学习 #include <iostream> #include <vector> #include <cmath> #include <algorithm> using namespace std; const int MAXN 100005; // 最大节点数 const int MAXLOG 20; // 最大对数深度 vector<…...

探索大语言模型(LLM):语言模型从海量文本中无师自通

文章目录 引言&#xff1a;当语言模型学会“自己教自己”一、自监督学习&#xff1a;从“无标签”中挖掘“有监督”信号二、语言模型的自监督训练范式&#xff1a;两大经典路径1. 掩码语言模型&#xff08;Masked Language Modeling, MLM&#xff09;——以BERT为例2. 自回归语…...

大语言模型 - 运行、微调的显存计算详解与优化 全量微调、LoRA 优化策略

写在前面 随着Transformer架构的大语言模型&#xff08;LLM&#xff09;不断发展&#xff0c;其参数规模也在迅速增加。无论是进行模型推理还是微调训练&#xff0c;GPU显存消耗都是开发和应用LLM时的重要考量。本文将详细探讨大模型运行&#xff08;推理&#xff09;与微调时…...

【音视频】视频解码实战

FFmpeg流程 从本地读取YUV数据编码为h264格式的数据&#xff0c;然后再存⼊到本地&#xff0c;编码后的数据有带startcode与FFmpeg 示例⾳频编码的流程基本⼀致。 函数说明 avcodec_find_encoder_by_name&#xff1a;根据指定的编码器名称查找注册的编码器。avcodec_alloc_co…...

计算机网络学习笔记 4-6章

第 4 章 网络层 【考纲内容】 &#xff08;一&#xff09;网络层的功能 异构网络互连&#xff1b;路由与转发&#xff1b;SDN 基本概念&#xff1b;拥塞控制 &#xff08;二&#xff09;路由算法 静态路由与动态路由&#xff1b;距离 - 向量路由算法&#xff1…...

游戏哪些接口会暴露源IP?_深度解析服务器通信安全隐患

一、用户认证体系中的IP泄露陷阱 在游戏登录验证环节&#xff0c;采用明文传输的HTTP协议接口会将客户端IP直接暴露在TCP握手阶段。某头部MOBA游戏曾因使用HTTP Basic认证方式&#xff0c;导致黑客通过抓取三次握手数据包获取服务器真实IP。游戏行业权威测试显示&#xff0c;使…...

树莓派学习专题<11>:使用V4L2驱动获取摄像头数据--启动/停止数据流,数据捕获,缓存释放

树莓派学习专题&#xff1c;11&#xff1e;&#xff1a;使用V4L2驱动获取摄像头数据--启动/停止数据流&#xff0c;数据捕获&#xff0c;缓存释放 1. 启动和停止数据流2. 捕获数据3. 释放缓存 1. 启动和停止数据流 使用命令 VIDIOC_STREAMON 启动摄像头数据流&#xff0c;使用…...

adb push 报错:CreateProcess failure, error 123

客户使用adb push 可执行程序的时候报错如下所示 原因&#xff1a;文件目录里边带中文导致 解决方法&#xff1a;将文件目录里中文改成英文就好了...

【实战篇】数字化打印——打印格式设计器的功能说明

前言 myBuilder内置了覆盖丰富场景的打印格式设计器&#xff0c;效果统一&#xff0c;功能完善。 设计器一&#xff1a;小票 用于设计小票、水单等滚筒纸张的场景&#xff0c;例如&#xff1a;超市购物小票 主要功能 打印格式的保存、下载、上传设计时功能&#xff1a;撤销…...

【数据挖掘】时间序列预测-时间序列预测策略

时间序列预测策略 &#xff08;1&#xff09;单步预测与多步预测&#xff08;2&#xff09;直接多步预测&#xff08;3&#xff09;递归多步预测&#xff08;4&#xff09;直接递归的混合预测&#xff08;5&#xff09;多输入多输出预测 &#xff08;1&#xff09;单步预测与多…...

京东商品详情数据爬取难度分析与解决方案

在当今数字化商业时代&#xff0c;电商数据对于市场分析、竞品研究、价格监控等诸多领域有着不可估量的价值。京东&#xff0c;作为国内首屈一指的电商巨头&#xff0c;其商品详情页蕴含着海量且极具价值的数据&#xff0c;涵盖商品价格、库存、规格、用户评价等关键信息。然而…...

【Linux】线程

一.线程概念 我们在学习进程的时候已经知道了&#xff0c;进程内核数据结构pcb自己的代码和数据。那么单单一个task_struct是什么呢&#xff1f; 我们将单个的task_struct叫做轻量级进程&#xff0c;而这个轻量级进程也叫做线程。以往我们在了解进程的时候&#xff0c;一个进…...

WPF-遵循MVVM框架创建图表的显示【保姆级】

文章速览 1、技术栈实现步骤1、创建WPF工程项目2、引入框架 Caliburn.Micro、数据可视化库ScottPlot.WPF3、创建文件夹&#xff0c;并创建相应的View & ViewModel4、创建启动类5、将启动类设置为启动项6、编写View7、编写VM8、将VM和View中的图表进行绑定9、备注 示例效果 …...

深入详解人工智能数学基础—概率论-KL散度在变分自编码器(VAE)中的应用

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

《代码整洁之道》第9章 单元测试 - 笔记

测试驱动开发 (TDD) 是一种编写整洁代码的“规程”或“方法论”&#xff0c;而不仅仅是测试技术。 JaCoCo 在运行测试后生成详细的覆盖率报告的工具&#xff0c; maven 引用。 测试驱动开发 测试驱动开发&#xff08;TDD&#xff09;是什么&#xff1f; TDD 不是说写完代码…...

每日c/c++题 备战蓝桥杯(P2392 kkksc03考前临时抱佛脚)

【题解】期末考试抱佛脚最短时间&#xff08;动态规划 | 二进制背包&#xff09; 题目链接 题目背景 kkksc03 的大学生活非常颓废&#xff0c;临近期末考试才开始疯狂复习。他有 4 门科目需要复习&#xff0c;每一科都有若干道题目&#xff0c;每道题目需要一定的时间完成。…...

徽客松S1 | 合肥首场 AI 黑客松招募

越来越多的黑客松在各个城市出现&#xff01;5 月 10 日&#xff0c;合肥&#xff0c;12 小时极速挑战。 我们和本次「徽客松」发起人 SDL 也是在一个黑客松上相识。当你的城市还没有黑客松可参加&#xff0c;与其等待&#xff0c;不如学习 SDL&#xff0c;自己发起一个&#…...

单片机-89C51部分:6、按键

飞书文档https://x509p6c8to.feishu.cn/wiki/EtkHw8MG0ipz3NkHlZEcwpEnn4g 一、应用场景&#xff1a; 轻触开关、按键、电容开关、光栅传感器、微动、关电开关 二、原理&#xff1a; 轻触按键可以理解为两根导线&#xff0c;按下时导线连接&#xff0c;松开时导线断开。我们可…...

小结: DHCP

交换机的物理接口分批地址池、全局分配地址池 分批地址池&#xff08;接口地址池/局部分配&#xff09; 按物理接口&#xff08;如 VLAN 接口、SVI、物理端口&#xff09;划分&#xff0c;每个接口单独配置一个小型地址池。适合规模较小、子网划分清晰的场景。配置方法示例&…...

matlab simulink中理想变压激磁电流容易有直流偏置的原因分析。

simulink把线性变压器模块拉出来&#xff0c;设置没有绕线电阻的变压器&#xff0c;激磁电感和Rm都有&#xff0c;然后给一个50%占空比的方波&#xff0c;幅值正负10V&#xff0c;线路中设置一个电阻&#xff0c;模拟导线阻抗。通过示波器观察激磁电流&#xff0c;发现电阻越小…...