PySpark 介绍 & 为什么使用 PySpark
官方文档:https://spark.apache.org/docs/latest/api/python/
1. PySpark 是什么?
PySpark 是 Apache Spark 的 Python API,提供了 大规模分布式计算能力 ,用于处理 大数据 。
Spark 本身是一个 基于内存计算的分布式计算框架 ,比 Hadoop MapReduce 更快,适用于 批处理、流处理、机器学习和图计算。
PySpark = Spark(核心计算引擎) + Python API,允许 Python 开发者轻松使用 Spark 进行大规模数据处理。
2. 为什么使用 PySpark?
✅ 适用于大规模数据处理
- PySpark 可以在 集群 (如 Hadoop YARN、Kubernetes、Standalone)上运行,处理 TB 或 PB 级数据。
- 适合处理 海量数据集,不受单机内存限制。
✅ 比 Hadoop MapReduce 快
- Spark 基于内存计算 ,比传统的 Hadoop MapReduce 更快(10-100 倍)。
- 支持 DAG(有向无环图)执行计划,优化计算过程。
✅ 兼容 Python 生态
- 支持 Pandas (通过
pyspark.pandas
)。 - 集成机器学习 (通过
pyspark.ml
)。 - 可以与 NumPy、SciPy、Matplotlib 结合使用。
✅ 支持 SQL 查询
- PySpark 提供了 Spark SQL,可以用 SQL 语法操作大数据,方便分析。
✅ 支持流式计算
- PySpark 的 Structured Streaming 可用于实时数据处理,如 日志分析、监控、金融风控。
✅ 内置 ML 和图计算
- MLlib 提供了分布式机器学习库(支持回归、分类、聚类等)。
- GraphX 支持分布式图计算(如 PageRank)。
3. PySpark 适用场景
- 大规模 ETL(数据清洗、转换、加载)
- 数据分析(支持 SQL 查询)
- 机器学习(大规模训练,替代 pandas/scikit-learn)
- 流处理(Kafka + Spark Streaming)
- 实时数据分析(如推荐系统、风控、监控)
4. PySpark vs Pandas
对比项 | PySpark | Pandas |
---|---|---|
处理规模 | TB / PB 级大数据 | 仅适合小数据(<10GB) |
计算方式 | 分布式计算(集群) | 单机计算 |
性能 | 基于内存计算,优化执行 | 纯 Python,计算较慢 |
并行化 | 自动并行 | 需手动优化 |
SQL 支持 | Spark SQL | 仅支持 DataFrame 操作 |
机器学习 | MLlib,分布式训练 | Scikit-learn,仅限小数据 |
🔥 如果数据 <10GB,推荐 Pandas;如果数据 >10GB,推荐 PySpark!
5. PySpark 示例
python
from pyspark.sql import SparkSession
# 创建 Spark 会话
spark = SparkSession.builder.appName("Example").getOrCreate()
# 读取 CSV 数据
df = spark.read.csv("data.csv", header=True, inferSchema=True)
# 查询 & 处理数据
df.filter(df["age"] > 25).groupBy("city").count().show()
# 关闭 Spark
spark.stop()