众所周知,教学文档总该以理论部分作为开篇,于是我们这篇Spark专题同样会以一堆理论和专有名词开始,笔者会尽可能的让专业词汇通俗易懂
第一部分:Spark 核心概述
Spark 是什么?
1. 大数据时代的"超级赛车"
举个例子,你有一个巨大的图书馆(HDFS),里面有数百万本书(数据)。你需要找出所有提到"人工智能"的书籍并统计次数。
传统方式(MapReduce):你雇佣一群人,每人拿几本书,找到关键词后记录下来,然后把所有记录交给一个人汇总。这个过程需要反复往返图书馆书架(磁盘IO),速度较慢。
Spark 方式:你给每个人一个神奇的书架(内存),他们可以一次性拿多本书放在手边,快速查找并记录,大大减少了往返时间。
Spark 就是一个基于内存计算的分布式大数据处理引擎,它比传统的 MapReduce 快 10-100 倍!
2. Spark 的四大特性
速度快
- 内存计算:减少磁盘 I/O,中间结果保存在内存中
- 查询优化:先进的查询优化器和代码生成器
易用性
- 多语言支持:Java, Scala, Python, R
- 高级 API:只需要关注"做什么",而不是"怎么做"
通用性
- Spark 生态系统提供一站式解决方案:
- 兼容性
- 多种数据源:HDFS, HBase, Cassandra, S3, Local FS…
- 多种部署模式:Standalone, YARN, Kubernetes, Mesos
3. Spark 的核心架构
核心组件解析:
- Driver:大脑,负责协调整个作业的执行
- Cluster Manager:资源调度员,负责分配计算资源
- Worker Node:干活的工作人员,每个节点可以运行一个或多个 Executor
- Executor:工作进程,负责执行具体的计算任务
- Task:最小工作单元,处理一个数据分区的计算
4. Spark 与 Hadoop 的关系
Spark 不是要取代 Hadoop,而是增强它!常见的搭配是:
- 存储:Hadoop HDFS(经济可靠的大规模存储)
- 计算:Spark(高速内存计算)
- 资源管理:Hadoop YARN(高效的资源调度)
5. 处理流程对比
6. 为什么要学习 Spark?
- 行业标准:大多数大数据岗位要求掌握 Spark
- 处理能力:能够处理 PB 级别数据
- 灵活性:支持批处理、流处理、机器学习和图计算
- 生态系统:丰富的库和活跃的社区支持
- 职业发展:掌握 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凑合了