Spark专题-第一部分:Spark 核心概述(1)-Spark 是什么?

众所周知,教学文档总该以理论部分作为开篇,于是我们这篇Spark专题同样会以一堆理论和专有名词开始,笔者会尽可能的让专业词汇通俗易懂

第一部分:Spark 核心概述

Spark 是什么?

1. 大数据时代的"超级赛车"

举个例子,你有一个巨大的图书馆(HDFS),里面有数百万本书(数据)。你需要找出所有提到"人工智能"的书籍并统计次数。

  • 传统方式(MapReduce):你雇佣一群人,每人拿几本书,找到关键词后记录下来,然后把所有记录交给一个人汇总。这个过程需要反复往返图书馆书架(磁盘IO),速度较慢。

  • Spark 方式:你给每个人一个神奇的书架(内存),他们可以一次性拿多本书放在手边,快速查找并记录,大大减少了往返时间。

Spark 就是一个基于内存计算的分布式大数据处理引擎,它比传统的 MapReduce 快 10-100 倍!

2. Spark 的四大特性

  1. 速度快

    • 内存计算:减少磁盘 I/O,中间结果保存在内存中
    • 查询优化:先进的查询优化器和代码生成器
  2. 易用性

    • 多语言支持:Java, Scala, Python, R
    • 高级 API:只需要关注"做什么",而不是"怎么做"
  3. 通用性

    • Spark 生态系统提供一站式解决方案:
Spark Core
核心引擎
Spark SQL
Spark Streaming
MLlib
机器学习
GraphX
图计算
结构化数据处理
实时流处理
机器学习算法
图分析
  1. 兼容性
    • 多种数据源:HDFS, HBase, Cassandra, S3, Local FS…
    • 多种部署模式:Standalone, YARN, Kubernetes, Mesos

3. Spark 的核心架构

分配任务 & 监控
分配资源
分配资源
分配资源
工作节点3
Executor
工作进程
Task
计算单元
Cache
内存缓存
工作节点2
Executor
工作进程
Task
计算单元
Cache
内存缓存
工作节点1
Executor
工作进程
Task
计算单元
Cache
内存缓存
Driver Program
大脑节点
Cluster Manager
资源调度员

核心组件解析

  • Driver:大脑,负责协调整个作业的执行
  • Cluster Manager:资源调度员,负责分配计算资源
  • Worker Node:干活的工作人员,每个节点可以运行一个或多个 Executor
  • Executor:工作进程,负责执行具体的计算任务
  • Task:最小工作单元,处理一个数据分区的计算

4. Spark 与 Hadoop 的关系

应用程序层
Spark, Hive, HBase
计算引擎层
Spark, MapReduce
资源管理层
YARN, Mesos
存储层
HDFS, S3

Spark 不是要取代 Hadoop,而是增强它!常见的搭配是:

  • 存储:Hadoop HDFS(经济可靠的大规模存储)
  • 计算:Spark(高速内存计算)
  • 资源管理:Hadoop YARN(高效的资源调度)

5. 处理流程对比

多次磁盘IO
Spark 优化流程
内存计算
输入数据
Pipeline 处理
输出结果
传统 MapReduce 流程
Map 阶段
输入数据
写入磁盘
Shuffle
从磁盘读取
Reduce 阶段
输出结果

6. 为什么要学习 Spark?

  1. 行业标准:大多数大数据岗位要求掌握 Spark
  2. 处理能力:能够处理 PB 级别数据
  3. 灵活性:支持批处理、流处理、机器学习和图计算
  4. 生态系统:丰富的库和活跃的社区支持
  5. 职业发展:掌握 Spark 是大数据工程师的核心技能

其实简单来说,可以看看招聘软件上对数据工程师的要求,大多会提到spark,所以咱的目标很明确,可恶,这里不能发表情包,不然有很多合适的表情包可以放在这

代码示例:创建一个简单的 Spark 应用

# 导入必要的库
from pyspark.sql import SparkSession# 创建 SparkSession - 所有 Spark 功能的入口点
spark = SparkSession.builder \.appName("MyFirstSparkApp") \          # 设置应用名称.config("spark.executor.memory", "2g") \  # 配置执行器内存.getOrCreate()                         # 获取或创建会话# 打印 Spark 版本信息
print(f"Spark version: {spark.version}")# 创建一个简单的数据集
data = [("Alice", 28), ("Bob", 35), ("Charlie", 42)]
columns = ["Name", "Age"]# 创建 DataFrame
df = spark.createDataFrame(data, columns)# 展示数据
df.show()# 执行简单查询
df.filter(df.Age > 30).show()# 停止 SparkSession
spark.stop()

输出结果

Spark version: 3.3.0
+-------+---+
|   Name|Age|
+-------+---+
|  Alice| 28|
|    Bob| 35|
|Charlie| 42|
+-------+---++-------+---+
|   Name|Age|
+-------+---+
|    Bob| 35|
|Charlie| 42|
+-------+---+

只是用python举个例子,不会python也不影响,毕竟实际工作中,应该会有界面化的软件让你直接写sql,但我不想使用公司的软件写博客,就只能用python凑合了

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

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

相关文章

从零到一上手 Protocol Buffers用 C# 打造可演进的通讯录

一、为什么是 Protobuf(而不是 XML/自定义字符串/.NET 二进制序列化) 在需要把结构化对象持久化或跨进程/跨语言传输时,常见方案各有痛点: BinaryFormatter 等 .NET 二进制序列化:对类型签名与版本极其脆弱、体积偏大&…

计算机网络(三)网络层

三、网络层网络层是五层模型中的第三层,位于数据链路层和传输层之间。它的核心任务是实现数据包在不同网络之间(跨网络)的逻辑传输。网络层的数据传输单位是数据报(Datagram)或数据包(Packet)。…

互联网大厂Java面试实录:从基础到微服务全栈技术答疑

互联网大厂Java面试实录:从基础到微服务全栈技术答疑 本文以电商场景为背景,展现一场互联网大厂Java开发职位的面试过程。严肃的面试官与搞笑的水货程序员谢飞机展开三轮技术问答,涵盖Java SE、Spring Boot、数据库、微服务、安全以及CI/CD等…

StringBuilder 深度解析:数据结构与扩容机制的底层细节

文章目录 前言 一、数据结构:不止是简单的字符数组 1. 核心成员变量(定义在 AbstractStringBuilder 中) 2. 构造器与初始容量 二、扩容机制:从 "不够用" 到 "换大容器" 的全过程 步骤 1:计算…

Elasticsearch面试精讲 Day 17:查询性能调优实践

【Elasticsearch面试精讲 Day 17】查询性能调优实践 在“Elasticsearch面试精讲”系列的第17天,我们聚焦于查询性能调优实践。作为全文检索与数据分析的核心引擎,Elasticsearch的查询性能直接影响用户体验和系统吞吐能力。在高并发、大数据量场景下&…

WPF 数据绑定模式详解(TwoWay、OneWay、OneTime、OneWayToSource、Default)

在WPF中,数据绑定模式(Binding Mode)用于指定数据流的方向。常见的模式有TwoWay、OneWay、OneTime、OneWayToSource和Default。TwoWay(双向绑定):数据从源(通常是ViewModel或数据上下文&#xf…

使用 NVIDIA Dynamo 部署 PD 分离推理服务

1 Dynamo 介绍 NVIDIA Dynamo 是一个开源的模块化推理框架,用于在分布式环境上实现生成式 AI 模型的服务化部署。Dynamo 通过动态资源调度、智能路由、内存优化与高速数据传输,无缝扩展大型 GPU 集群之间的推理工作负载。 Dynamo 采用推理引擎无关的设…

答题卡识别改分项目

目录 核心思路 分步实现与代码解析 1. 环境准备与工具函数定义 2. 图片预处理 3. 轮廓提取与筛选 3. 轮廓提取与筛选 4. 透视变换(矫正倾斜答题卡) 5. 阈值处理(突出填涂区域) 6. 提取选项圆圈轮廓 7. 选项轮廓排序&…

Python爬虫实战:研究Pandas,构建新浪网股票数据采集和分析系统

1. 系统概述 股票数据分析系统旨在通过自动化手段获取市场数据,进行深度分析,辅助投资决策。本系统主要包含以下核心模块: 数据爬取模块:从新浪财经获取股票列表、基本信息及历史交易数据 数据处理模块:清洗原始数据,处理缺失值与异常值,计算技术指标 分析可视化模块:…

【C++STL】list的详细用法和底层实现

🌟个人主页:第七序章 🌈专栏系列:C++ 目录 ❄️前言: 🌈一:介绍 🌈二:list的创建 ☀️基本框架 🌙节点类 🌙构造函…

AI大模型开发(多模态+提示词)

接着之前的例子,继续测试模型对话,今天主要测试多模态加上系统提示词。 一.多模态 多模态方法,主要添加了对图片的测试。 public String chatWithMessage(UserMessage userMessage){ChatResponse chatResponse qwenChatModel.chat(userMess…

Qt程序单独运行报错问题

Qt程序单独运行报错问题介绍问题原因分析解决方案(从最佳实践到临时方法)方法一:使用 windeployqt 工具(最推荐、最规范)方法二:临时修改系统 PATH(适合开发调试)方法三:…

Flask学习笔记(二)--路由和变量

一、路由Flask支持两种路由1、使用route()装饰器将URL绑定到函数app.route(/hello)def hello_world():return hello world2、使用应用程序对象的add_url_rule()函数def hello_world():return hello worldapp.add_url_rule(/, hello, hello_world)二、变量规则Flask开发中&#…

Skywalking告警配置+简易邮件告警应用配置(保姆级)

Skywalking告警配置简易邮件告警应用配置前言: 前文:SkyWalking Elasticsearch8 容器化部署指南:国内镜像加速与生产级调优_skywalkinges-CSDN博客 ​ SKywalking Agent配置Oracle监控插件安装指南-CSDN博客 Skywalking版本:V10.…

无人机如何实现图传:从原理到实战的全景解读

无人机图传的工作不是简单地把镜头的数据直接“丢”到一个屏幕上,而是一个由编码、传输、解码三段组成的系统。首先是视频编码:摄像头采集的原始画面通常需要经过编解码器压缩,常见标准包括H.264、H.265和VP9等。压缩的目的是减少数据量&…

AS32S601在轨重构(OTA)方案的优化与分析

摘要在轨重构(OTA)技术因其在航天、工业控制、物联网等领域的高可靠性和持续服务需求而备受关注。本文以国科安芯推出的AS32S601芯片为研究对象,深入分析其OTA方案的设计原理、技术细节及优化策略,并结合芯片的硬件特性&#xff0…

修复Android studio的adb无法连接手机问题

复制下面的内容到一个文本txt里面然后把里面的Android studio路径和sdk路径改成你自己的,然后改成把.txt改成bat 右键管理员运行 echo off REM Deep Fix for "Couldnt terminate the existing process" error REM This script will completely reset ADB …

css优化都有哪些优化方案

CSS 优化其实可以分成几个层面:性能优化、可维护性优化、兼容性优化以及用户体验优化。这里我帮你梳理一份比较系统的 CSS 优化方案清单,方便你参考:🔹 一、加载性能优化减少 CSS 文件体积压缩 CSS(去掉空格、换行、注…

vue,uniapp 实现卷帘对比效果

需求&#xff1a;两张图重叠放在一起&#xff0c;拖动分割线实现卷帘对比效果&#xff0c;如图一、vue2代码 <template><div class"main"><div class"img-comparison" mousedown"startSlide"><img class"before"…

【笔记】空气弹簧概述、刚度调节原理

参考链接&#xff1a;汽车底盘空气悬架关键零部件之空气弹簧 1.概述 汽车空气弹簧&#xff08;Air Spring&#xff09;是一种以“压缩空气”作为弹性介质的悬架元件&#xff0c;用来取代传统钢制螺旋弹簧或钢板弹簧。它在乘用车、客车、重卡及轨道交通上越来越普及&#xff0…