以下内容将详细介绍在 Ubuntu 系统上安装 PySpark 并实现一个经典的 WordCount(单词计数)示例。
整个过程从环境配置到程序运行,结构清晰,逻辑严谨,适合数据工程入门与分布式计算基础学习 🧠。
🚀 一、PySpark 概述
PySpark 是 Apache Spark 的 Python 接口,它将分布式计算框架与 Python 生态结合,能在多节点环境下对大规模数据进行高效处理。
核心组件包括:
- Spark Core:分布式任务调度与内存计算。
- Spark SQL:结构化数据查询。
- Spark Streaming:流式数据分析。
- MLlib:机器学习库。
✅ 本文重点:安装 PySpark 并运行 WordCount 程序。
🧩 二、系统环境准备
| 项目 | 推荐版本 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 / 24.04 | 稳定且兼容性好 |
| Python | ≥ 3.8 | Spark 支持较新 Python 版本 |
| Java | ≥ 11 | Spark 依赖 JVM 运行环境 |
| Spark | 3.5.x | 最新稳定版本,性能优化明显 |
⚙️ 三、安装步骤
1️⃣ 安装 Java(OpenJDK)
sudo apt update
sudo apt install openjdk-17-jdk -y解释:
openjdk-17-jdk是 Java 开发工具包,Spark 运行时需要。安装后可验证:
java -version若输出包含
openjdk version "17",说明安装成功。
2️⃣ 安装 Python 及 pip
sudo apt install python3 python3-pip -y解释:
- Python 用于运行 PySpark 脚本。
pip是 Python 的包管理器,用于安装依赖。
3️⃣ 安装 Spark(推荐使用官方压缩包)
cd /opt
sudo wget https://dlcdn.apache.org/spark/spark-3.5.3/spark-3.5.3-bin-hadoop3.tgz
sudo tar -xvf spark-3.5.3-bin-hadoop3.tgz
sudo mv spark-3.5.3-bin-hadoop3 /usr/local/spark解释:
spark-3.5.3-bin-hadoop3是预编译版本,无需自行编译。- 解压后移动至系统目录
/usr/local/spark,便于管理。
4️⃣ 配置环境变量
编辑 ~/.bashrc:
sudo nano ~/.bashrc在文件末尾添加:
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PYSPARK_PYTHON=python3保存后执行:
source ~/.bashrc解释:
- 设置 Spark路径 与 Python解释器。
- 让系统在任意目录下可直接运行
pyspark命令。
5️⃣ 安装 PySpark(Python 接口)
pip install pyspark解释:
- 此命令会自动安装与当前 Spark 兼容的 PySpark 库。
- 可通过
python3 -m pyspark验证是否正常启动。
🧠 四、WordCount 实现
在 /home/ubuntu/ 下创建脚本 wordcount.py:
from pyspark import SparkContext, SparkConf
# 创建Spark配置与上下文
conf = SparkConf().setAppName("WordCount").setMaster("local[*]")
sc = SparkContext(conf=conf)
# 读取文本文件
text = sc.textFile("input.txt")
# 执行单词计数
counts = (text.flatMap(lambda line: line.split(" "))
.map(lambda word: (word, 1))
.reduceByKey(lambda a, b: a + b))
# 保存结果
counts.saveAsTextFile("output")
sc.stop()代码解释表:
| 行号 | 代码片段 | 作用说明 |
|---|---|---|
| 1-2 | SparkContext 初始化 | 创建执行上下文 |
| 5 | textFile() | 读取文件并分布式加载 |
| 7 | flatMap() | 按空格拆分为单词列表 |
| 8 | map() | 将每个单词映射为 (word, 1) |
| 9 | reduceByKey() | 对相同单词进行求和 |
| 11 | saveAsTextFile() | 输出结果到指定目录 |
| 13 | sc.stop() | 关闭 Spark 任务 |
🧮 五、执行命令
确保当前目录下有输入文件:
echo "hello spark hello world" > input.txt然后运行:
spark-submit wordcount.py运行成功后,可查看结果:
cat output/part-00000输出示例:
('hello', 2)
('spark', 1)
('world', 1)📊 六、执行流程说明图
🔧 七、常见问题与优化建议
| 问题 | 原因分析 | 解决方案 |
|---|---|---|
| 找不到 Java | 环境变量未配置 | 确认 JAVA_HOME 设置正确 |
| PySpark 启动慢 | 依赖过多或网络延迟 | 使用本地模式 local[*] |
| 输出目录已存在 | Spark 不允许覆盖 | 删除旧输出 rm -rf output/ |
✅ 八、总结
🔹 PySpark 结合 Spark 的分布式计算能力与 Python 的易用性,可在 大数据分析、日志统计、机器学习前处理 等场景中广泛应用。
🔹 WordCount 作为入门案例,展示了 RDD 操作链 的完整流程,从数据加载到分布式聚合。
🔹 在生产环境中,可进一步接入 HDFS、Hive、Kafka 实现大规模数据流处理。
🔥 一句话总结:
在 Ubuntu 上配置好 Java 与 Spark 环境后,使用 PySpark 仅需几行代码即可实现高效并行的数据处理,是现代数据工程的基础技能之一。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。