Thanks to visit codestin.com
Credit goes to segmentfault.com

以下内容将详细介绍在 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.8Spark 支持较新 Python 版本
Java≥ 11Spark 依赖 JVM 运行环境
Spark3.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-2SparkContext 初始化创建执行上下文
5textFile()读取文件并分布式加载
7flatMap()按空格拆分为单词列表
8map()将每个单词映射为 (word, 1)
9reduceByKey()对相同单词进行求和
11saveAsTextFile()输出结果到指定目录
13sc.stop()关闭 Spark 任务

🧮 五、执行命令

确保当前目录下有输入文件:

echo "hello spark hello world" > input.txt

然后运行:

spark-submit wordcount.py

运行成功后,可查看结果:

cat output/part-00000

输出示例:

('hello', 2)
('spark', 1)
('world', 1)

📊 六、执行流程说明图

flowchart TD
A[读取文本 input.txt] --> B[flatMap 拆分单词]
B --> C[map 映射成 (word,1)]
C --> D[reduceByKey 聚合计数]
D --> E[输出结果到 output 文件夹]

🔧 七、常见问题与优化建议

问题原因分析解决方案
找不到 Java环境变量未配置确认 JAVA_HOME 设置正确
PySpark 启动慢依赖过多或网络延迟使用本地模式 local[*]
输出目录已存在Spark 不允许覆盖删除旧输出 rm -rf output/

✅ 八、总结

🔹 PySpark 结合 Spark 的分布式计算能力与 Python 的易用性,可在 大数据分析、日志统计、机器学习前处理 等场景中广泛应用。
🔹 WordCount 作为入门案例,展示了 RDD 操作链 的完整流程,从数据加载到分布式聚合。
🔹 在生产环境中,可进一步接入 HDFS、Hive、Kafka 实现大规模数据流处理。


🔥 一句话总结:
在 Ubuntu 上配置好 Java 与 Spark 环境后,使用 PySpark 仅需几行代码即可实现高效并行的数据处理,是现代数据工程的基础技能之一。


蓝易云
39 声望6 粉丝

蓝易云高防服务器:www.tsyvps.com