Skip to content
← 返回Spark列表
DataFrame与惰性执行

Spark:用途、惰性执行与 DAG ​

惰性 DAG、作业与物化 ​

前置:会读Python函数、SQL分组和文件路径。本文固定Apache Spark/PySpark 3.5.6版本族,运行前应核对所在集群版本;不是对4.x的兼容承诺。本轮只写作与静态解析,示例未执行,不启动Spark、JVM或外部服务。

本例将订单CSV读为 read,过滤合法订单得到 accepted,再按日期和客户聚合为 result;变量定义、SQL和输入文件见完整批处理项目。阅读前可先沿该页的 batch.py 确认数据流;本页解释执行时机,不是另一套运行结果。

Spark transformation 与 action ​

Spark transformation 与 action的区别是是否触发结果物化。select、filter、groupBy构造惰性计算计划;show、count、collect与write等action才请求执行。read构建数据源关系,但模式推断和文件发现可能做额外工作,所以不要把“惰性”误解为任何API调用都绝不访问文件。

本例从read到accepted只描述关系;result.orderBy(...).show触发一次作业集合,随后write可能再次计算同一输入。一个action不必严格对应一个job,广播、子查询和AQE可能带来额外job。多个action若读取会变化的源,得到的甚至不是同一快照;真实对账要先固定输入版本。

Spark collect 风险 ​

Spark collect 风险在于把全部结果搬进driver内存,分布式计算不会替客户端承担无限结果容量。toPandas同样有此问题;调大executor内存不能解决driver接收不下的结果。即使一行很小,亿级行仍可压垮进程。

本例只对按日期和客户汇总后的关系show(20),它限制展示行数,但上游聚合仍可能扫描全量输入并shuffle。limit不能作为全量质量证明,take/toLocalIterator也不是完全免内存风险。大结果应写分布式存储,再用分布式统计与抽样核对,只有先证明体量有界时才collect。

Spark cache 与 checkpoint ​

Spark cache 与 checkpoint解决不同问题。cache/persist主要复用昂贵计算,首次action才填充;分区被逐出或丢失时可按血缘重算,调用cache不等于结果已落盘。复用结束unpersist,避免给其他任务施加内存压力。只用一次的小表通常不需要缓存。

DataFrame.checkpoint把计算结果写入已配置的可靠存储并截断逻辑计划,适合迭代导致血缘过长等情况;返回的新DataFrame才引用检查点。localCheckpoint依赖执行器缓存,不能当可靠恢复点。批处理checkpoint与Structured Streaming的checkpoint目录用途不同,后者保存offset、状态与查询进度,既不是普通cache,也不是把任意新查询接上旧目录的通行证。本例为保持最小关系链不启用cache/checkpoint。

资料与版本核对 ​

英文以官方3.5.6固定版本文档为准;中文作者资料用于术语与入门路径,不据旧版教程推断3.5新增API。核对日期:2026-10-17。

大数据学习方向 ​

大数据 ​

原文是课程方向清单,尚未包含实现教程。按学习内容归并如下:

  • 计算与处理:Hadoop、Spark、Flink、ETL 和数据仓库。
  • 存储与架构:HBase、大数据架构、Linux 与云计算。
  • 分析与应用:统计分析、可视化、推荐、反欺诈、数据挖掘和机器学习;Jupyter Notebook 是练习工具。

可先阅读 Spark 能力概览 和 数据库分类,再按具体工作目标选择方向。

Spark ​

简介

Apache Spark 是一个开源的大数据处理框架,它提供了高性能、通用的集群计算引擎,能够处理大规模数据集的并行计算任务。Spark 的主要功能和应用包括:

  1. 批处理:Spark 提供了强大的批处理功能,可以高效地处理大规模的数据集。它支持使用高级的数据操作和转换算子,如过滤、映射、聚合等,以及复杂的数据分析和处理任务。
  2. 实时流处理:Spark Streaming 是 Spark 的流处理组件,可以处理实时数据流。它支持将实时数据流划分为小批次数据,并在每个批次上执行批处理操作,从而实现了近实时的流处理能力。
  3. 机器学习:Spark 提供了机器学习库(MLlib),包含了各种常见的机器学习算法和工具,如分类、回归、聚类、推荐系统等。这些算法可以在分布式环境下运行,利用 Spark 的并行计算能力,处理大规模的机器学习任务。
  4. 图计算:GraphX 提供图遍历、聚合与连接等能力,用于图结构数据分析和计算。
  5. SQL 查询和数据集处理:Spark 提供了对结构化数据的支持,可以通过 Spark SQL 进行 SQL 查询和数据集处理。它支持常见的 SQL 查询操作,如过滤、聚合、连接等,并提供了 DataFrame 和 Dataset API,用于灵活地处理和转换结构化数据。

返回 Spark 专题 · 继续学习路线

继续阅读