Spark 在 Python 大数据中的作用

一句话总结:

Spark 是一个 ​快速处理海量数据 的工具,用 Python 写代码就能轻松分析 TB 级的数据(比如日志、用户行为、交易记录等),比传统单机工具(如 Excel、Pandas)快几十倍甚至几百倍!


🌟 举个栗子:

假设你有一个 ​图书馆 ,里面有 ​1亿本书,你需要统计:

  1. 哪些书最受欢迎?
  2. 不同地区的借阅偏好是什么?
  3. 预测未来哪些书会被借阅更多?

如果用普通电脑的 Excel 或 Python 单机处理:

  • 卡死!​ 内存不够,速度极慢,甚至打不开文件。

Spark 的作用

把数据拆分成小块,分给多台电脑同时计算(分布式计算),最后汇总结果,轻松搞定海量数据!


🔑 Spark 的核心特点:

  1. 速度快

    内存计算 + 多机器并行,比传统 Hadoop 快 100 倍。

  2. 易用性

    用 Python(PySpark)写代码,语法类似 Pandas,小白也能上手。

  3. 通用性

    支持数据分析、机器学习、实时计算、图计算等。

  4. 容错性

    如果某台电脑宕机,Spark 会自动恢复数据,保证任务不中断。


📌 Spark 在 Python 中的用处(PySpark):

1. ​处理超大型数据集
  • 场景:分析全网用户的购物记录(TB 级数据)。

  • 代码示例

    复制代码
    from pyspark.sql import SparkSession
    spark = SparkSession.builder.appName("example").getOrCreate()
    # 读取 100GB 的 CSV 文件(普通电脑根本打不开)
    df = spark.read.csv("user_purchases.csv", header=True)
    # 统计每个用户的购买总金额
    result = df.groupBy("user_id").sum("amount")
    result.show()
2. ​机器学习(MLlib)​
  • 场景:用 1亿条用户数据训练推荐模型(比如猜你喜欢)。

  • 代码示例

    复制代码
    from pyspark.ml.recommendation import ALS
    # 训练一个协同过滤模型
    als = ALS(maxIter=10, regParam=0.01, userCol="user_id", itemCol="book_id", ratingCol="rating")
    model = als.fit(data)
    # 预测用户 1001 可能喜欢的书
    predictions = model.recommendForUserSubset(user_ids, 5)
3. ​实时数据处理
  • 场景:统计某电商网站每秒的用户点击量,实时更新大屏。

  • 代码示例

    复制代码
    from pyspark.sql import SparkSession
    spark = SparkSession.builder.appName("realtime").getOrCreate()
    # 从 Kafka 读取实时数据流
    df = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "localhost:9092").load()
    # 按分钟统计点击量
    clicks_per_minute = df.groupBy(window("timestamp", "1 minute")).count()
    # 输出到屏幕
    clicks_per_minute.writeStream.outputMode("complete").format("console").start().awaitTermination()
4. ​复杂数据清洗
  • 场景:合并 1000 个 CSV 文件,去重、过滤无效数据、转换格式。

  • 代码示例

    复制代码
    # 合并所有 CSV 文件
    df = spark.read.csv("data/*.csv", header=True)
    # 去重
    df = df.dropDuplicates()
    # 过滤无效年龄(比如年龄 > 100)
    df = df.filter(df.age <= 100)
    # 保存结果
    df.write.parquet("cleaned_data.parquet")

🌈 Spark 的底层原理(简单版):

  1. 分布式存储

    数据被切分到多台机器(如 HDFS、Amazon S3)。

    • 例:1TB 数据拆成 1000 块,每块 1GB,分到 100 台机器。
  2. 分布式计算

    Spark 把任务拆成小任务(Task),分给多台机器并行执行。

    • 例:统计词频时,每台机器统计自己那部分数据,最后汇总。
  3. 内存计算

    数据尽量放在内存中,减少磁盘读写,速度更快。


🛠️ 小白如何快速上手?

1. 安装 PySpark
复制代码
# 只需一行命令
pip install pyspark
2. 本地快速体验(无需集群)
复制代码
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[4]").appName("test").getOrCreate()
# 测试一个小数据集
data = [("Alice", 34), ("Bob", 45), ("Cathy", 29)]
df = spark.createDataFrame(data, ["name", "age"])
df.show()
3. 学习资源推荐
  • 语法:PySpark 的 DataFrame API 和 Pandas 类似。
  • 文档:Spark 官方文档
  • 实战:从处理 CSV 文件开始,逐步尝试 SQL、机器学习。

❓ 常见问题解答:

Q:Spark 和 Hadoop 有什么区别?

A:Hadoop 用磁盘计算,适合离线批处理;Spark 用内存计算,更快,且支持实时计算。

Q:为什么用 Python(PySpark)而不用 Scala?

A:Python 更简单,适合数据分析师和初学者;Scala 性能更好,适合工程师。

Q:单机电脑能跑 Spark 吗?

A:可以!本地模式(local mode)用线程模拟分布式,适合学习和测试。

Q:Spark 需要多少内存?

A:本地测试 8GB 够用,生产环境通常需要 64GB 以上 + 多台机器。


📢 注意事项:

  1. 不要所有数据都塞进内存,优先用分布式存储。
  2. 避免使用 Python 原生循环 ,用 Spark 的内置函数(如 df.withColumn())。
  3. 数据量小(<1GB)时用 Pandas,Spark 反而更麻烦。

总结:

  • Spark 适合:数据量太大(GB 到 PB 级)、需要快速处理、实时分析、机器学习。
  • Python(PySpark)优势:语法简单,生态丰富,适合数据分析师入门大数据。
  • 下一步行动 :装好 PySpark,用一个小数据集(如 CSV)试试 groupBy()filter()
相关推荐
小彭律师4 小时前
数字化工厂中央控制室驾驶舱系统架构文档
python
old_power6 小时前
【Python】PDF文件处理(PyPDF2、borb、fitz)
python·pdf
测试开发Kevin6 小时前
从投入产出、效率、上手难易度等角度综合对比 pytest 和 unittest 框架
python·pytest
强化学习与机器人控制仿真6 小时前
Newton GPU 机器人仿真器入门教程(零)— NVIDIA、DeepMind、Disney 联合推出
开发语言·人工智能·python·stm32·深度学习·机器人·自动驾驶
Tiny番茄7 小时前
No module named ‘xxx’报错原因及解决方式
开发语言·python
MZWeiei7 小时前
Spark任务调度流程详解
大数据·分布式·spark·scala
бесплатно8 小时前
Spark-Core(RDD行动算子)
大数据·分布式·spark
老朋友此林8 小时前
MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构
人工智能·python·nlp
SelectDB技术团队9 小时前
顺丰科技:从 Presto 到 Doris 湖仓构架升级,提速 3 倍,降本 48%
大数据·数据库·数据仓库·信息可视化·数据分析·doris·实时分析
宸汐Fish_Heart9 小时前
Python打卡训练营Day22
开发语言·python