ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Data Engineering Zoomcamp 批次处理入门:Batch vs Streaming 与 Spark 定位指南

2026/9/12 14:48:26 拓冰建站 浏览量
Data Engineering Zoomcamp 批次处理入门:Batch vs Streaming 与 Spark 定位指南 Data Engineering Zoomcamp 批次处理入门Batch vs Streaming 与 Spark 定位指南【免费下载链接】data-engineering-zoomcampData Engineering Zoomcamp is a free 9-week course on building production-ready data pipelines. Join the course here 项目地址: https://gitcode.com/GitHub_Trending/da/data-engineering-zoomcamp批次处理是数据工程中最基础、应用最广泛的数据处理模式。本文是 Data Engineering Zoomcamp 第六模块Batch Processing的第一课系统讲解批次处理与流处理的核心区别、批次任务的调度窗口与常用技术栈、以及 Apache Spark 在整个数据管线中的定位与适用场景帮助你建立何时用批次、何时用流、何时引入 Spark的决策框架。模块全景本周你将学什么在深入批次处理概念之前先看本模块cohorts/2027/06-batch/README.md的完整学习路线从 01-introduction-to-batch-processing.md 出发本周围绕以下主题展开批次处理是什么本文核心内容定义批次处理并对比流处理Spark 是什么以及为什么需要它大规模分布式数据处理引擎安装 Spark在 Google Cloud 虚拟机上基于 Linux 安装参考 03-installing-spark.md用 PySpark 初识 Spark本课程使用 Python 而非 ScalaSpark 核心特性DataFrames、SQL、joins 等RDDs相对古老的 Spark 概念与 DataFrame 的区别Spark 内部机制集群结构、任务调度用 Docker 运行 Spark 任务将 Spark 作业部署到云端并连接数据仓库模块说明module.yaml中标注了 16 个单元其中 RDD 相关单元11、12、出租车数据准备6和 Linux 引导安装3属于可选内容。批次处理与流处理两种数据处理模式数据处理方式多种多样两大主流是批次处理batch processing与流处理streaming。本周聚焦批次流处理是下一个模块的主题对应 07-streaming 目录。批次处理的场景假设数据库中存放着出租车行程数据取某一天的全部数据——比如 1 月 15 日 00:00 至 23:59 的所有行程——用一个任务一次性处理完产出另一个数据集。这就是批次任务先积累一块数据再一次性整体处理。流处理则完全不同想象在纽约扬招一辆黄色出租车行程开始时车内设备向数据流发送一条带有元数据的事件。某个流处理器从该流中读取事件、实时处理并把结果写入另一个流。整个过程即时发生、实时进行。两种模式的核心差异可以概括为维度批次处理流处理数据组织按时间窗口积累成块如一天、一小时事件持续不断流入处理时机窗口结束后一次性处理事件到达即处理典型时延分钟级到天级秒级甚至更低实现工具Python 脚本、SQL、Spark 等流处理器如 Flink、Spark Streaming批次任务何时运行调度窗口批次任务通常按计划调度运行常见粒度每周处理本周积累的全部数据每天最常用——一天结束后处理昨天产生的所有数据每小时每小时结束后处理前一小时的数据也可以细化到每 20 分钟、每 5 分钟一次但这类细粒度调度相对少见。日级和小时级是日常工作中最常见的两种调度窗口。这种调度模式直接决定了批次处理的时延特征数据处理结果总是滞后于数据产生的时间窗口。批次任务的技术栈从 Python 脚本到 Spark用于批次任务的技术通常并不神秘Python 脚本最常用。回顾第一周编写的数据摄取脚本——它读取 CSV 文件并写入数据库就是典型的批次脚本每月执行一次每月运行一个月份的出租车数据。该脚本通过--year、--month参数逐月摄取数据并支持--chunksize分批写入。SQL同样非常普遍。第四周analytics engineering 模块用 SQL 定义转换获取一大块数据一次性处理。SQL 因便捷、普及率高而广受欢迎。Spark本周主题后面详述。其他工具如 Flink 等。关于 Python 脚本的补充它们可以在任何地方运行——Kubernetes、批量服务等均可。而编排这些任务则依赖 Airflow 等工作流工具。一个典型的工作流可能是数据落入数据湖例如 CSV 文件Python 脚本读取文件、处理后写入数据库或数仓SQL 任务可用 dbt 等工具完成数据准备可能再运行 Spark然后又回到 Python每一步都是一个批次任务使用不同的技术由 Airflow 编排整条管线。这与第二模块工作流编排的内容02-workflow-orchestration一脉相承。批次的优势与劣势优势一便捷、易于管理。工作流工具允许我们定义所有步骤、参数化它们并轻松重试。工作流带有处理时间间隔的参数一旦某步失败只需重新执行即可。重试非常安全因为一切都不是实时发生的。优势二易于扩展。Python 脚本处理更大文件有困难就换更大的机器Spark 处理吃力就扩大集群规模或增加节点。需要时可以随时向上或向下扩展。主要劣势时延。由于按固定间隔运行总要等待。例如每小时处理一次数据工作流每一步执行约 5 分钟最后一步 3 分钟总计约 20 分钟。小时结束后工作流启动只有等这 20 分钟跑完数据才就绪。最坏情况下上一小时开头到达的数据要等近 90 分钟才能使用。流处理能解决时延问题但很多时候并不需要如此快速的响应。许多指标延迟一小时、一天甚至一周出现在仪表盘上都无妨。正因为批次如此便捷绝大多数数据处理任务——按作者经验80% 甚至更多——都是批次处理剩下 10%-20% 才是流处理。Spark 的定位何时引入分布式引擎本模块的剩余内容聚焦 Apache Spark。简单地说Spark 是大规模数据处理的分布式引擎。它从数据库或数据湖拉取数据到自己的机器executors上处理再把结果写回数据湖或数仓——处理逻辑发生在 Spark 内部这正是引擎的含义。它支持分布式集群可由数十、数百甚至数千台机器组成协同拉取数据、处理并保存结果。何时该用 Spark典型场景是数据位于数据湖通常就是 S3 或 Google Cloud Storage 中的一批文件多为 parquet 格式。Spark 拉取数据、处理、写回数据湖。这与数据仓库场景形成对比若数据在 BigQuery 这样的数仓中直接用 SQL 即可但当手里只有 S3/GCS 上的一堆文件时直接跑 SQL 并不总是容易——这正是 Spark 的用武之地。选择建议详见 02-introduction-to-spark.md能用 SQL 表达的批次任务优先使用 Hive、Presto、AthenaAWS 托管的 Presto或基于外部表的 BigQuery 直接对数据湖查询SQL 表达不了的任务需要更灵活的逻辑、代码难以管理成单个巨型查询、想拆分成模块并做单元测试、或功能在 SQL 中根本不存在时——使用 Spark。数据科学经验中通常与机器学习相关的工作模型训练与推理是 SQL 难以表达的典型。实战衔接从概念到 Spark 集群本单元是概念基础后续单元将逐步落地。这里给出与本模块配套的仓库资源便于继续深入学习模块主页cohorts/2027/06-batch/README.md 列出全部 16 个单元与作业入口homework.md本地安装参考 03-installing-spark.md配合 setup 目录下的 Linux、macOS、Windows 安装指南含 spark-defaults.conf 与 spark.dockerfile 等配置文件示例代码code 目录包含06_spark_sql.py参数化脚本等 PySpark 示例download_data.sh脚本可按车型与年份批量下载出租车数据到data/raw/目录作为 Spark 作业的输入集群原理08-anatomy-of-a-spark-cluster.md 讲解 driver 提交作业、master 协调、executors 实际计算的三层结构以及现代集群直接读写 S3/GCS 而非 HDFS 的原因SQL 实战07-sql-with-spark.md 演示如何把第四周的 revenue 报表用 Spark SQL 重写——合并 green/yellow 数据、注册临时表、执行聚合查询并用coalesce(1)收敛输出文件。小结批次处理是按时间窗口积累数据后一次性处理调度粒度以日级、小时级最常见批次便捷、易管理、易重试、易扩展主要代价是时延实践中约 80% 的数据处理任务是批次流处理占 10%-20%批次技术栈覆盖 Python 脚本、SQL、Spark由 Airflow 等工作流工具编排能用 SQL 就用 SQL当任务无法用 SQL 表达时再引入 Spark——这正是本模块后续课程的主线。【免费下载链接】data-engineering-zoomcampData Engineering Zoomcamp is a free 9-week course on building production-ready data pipelines. Join the course here 项目地址: https://gitcode.com/GitHub_Trending/da/data-engineering-zoomcamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考