Logo
Section 1 / 8

Cloud Dataflow 简介与批处理建模

流式模型工作流简介。

导入

Cloud Dataflow 简介与批处理建模

流式模型工作流简介。

什么是数据流(Dataflow)?

Dataflow 是一种用于构建数据管道的工具,可以在本地运行,也可以在托管环境中扩展到大型集群。虽然 Cloud Dataflow 最初是 Google 在 GCP 平台上孵化的专用工具,但现在它基于开源的 Apache Beam 库构建,因此也可用于其他云环境。

Course Image

该工具提供以下功能:

  • 面向不同数据源的输入连接器,例如 BigQuery 和 Cloud Storage 上的文件
  • 用于转换和聚合数据的操作算子
  • 面向 Cloud Datastore 和 BigQuery 等系统的输出连接器

在本章中,我们将使用 Dataflow 构建一个数据管道:从 BigQuery 读取数据,应用 sklearn 模型进行预测,并将预测结果写回 BigQuery 和 Cloud Datastore。我们将先在部分数据上本地运行该管道,然后在 GCP 上扩展至更大规模的数据集。

构建可扩展的数据管道

Dataflow 旨在支持高度可扩展的数据管道,例如在云部署中不同系统之间进行 ETL 数据迁移。它还被扩展用于构建机器学习管道,并原生支持 TensorFlow 及其他机器学习方法。这使得数据科学家能够在无需工程团队协助的情况下,独立构建可投入生产的大型数据处理流程。

Dataflow 的核心组件是“管道”(Pipeline),它定义了工作流中需要执行的一系列操作。
Dataflow 中的工作流是一个 #concept=DAG# 有向无环图(DAG) #concept#,包含数据源、数据接收端以及数据转换操作。以下是其中一些关键组件:

  • Pipeline(管道):定义作为 Dataflow 任务执行的一系列操作。
  • Collection(集合):工作流中各个阶段之间的接口。工作流中任意步骤的输入是一组对象的集合,输出则是新的对象集合。
  • DoFn:对集合中的每个元素执行的操作,生成一个新的集合。
  • Transform(变换):对集合中一组元素执行的操作,例如聚合操作。

使用 Python 进行 Dataflow 开发

Dataflow 支持多种编程语言,但本课程将重点介绍 Python 实现。Python 版本存在一些限制,例如工作节点可能需要从源码编译库,但它能很好地帮助我们理解 Apache Beam 的各个核心组件。在 Beam 中创建工作流时,使用 Python 的管道语法(pipe syntax)将多个步骤串联起来。最终形成一个可分布到集群中多台机器上并行执行的操作 DAG。

![](http://network.jancsitech.net:9000/pageflex-ai/images/general/202509/1758372647311919829.png)

在 Dataflow 管道中转换数据

在 Dataflow 管道中转换数据主要有两种方式:DoFn 和 Transform 步骤。
DoFn 步骤定义对集合中每个对象执行的操作。例如,我们将查询公共的 Natality 数据集,得到的对象集合由字典组成。我们可以定义一个 DoFn 操作,使用 sklearn 对每个字典对象进行预测,并输出新的字典对象。

Transform 则定义对一组对象执行的操作,例如将原始追踪事件聚合为用户级别的汇总特征。这类操作通常与分区转换步骤结合使用,以便将对象集合划分为更易处理的大小。本课程不会深入探讨这一过程,但可以举例说明:在 Dataflow 管道中使用 Transform 调用 Featuretools 来实现自动化特征工程。

本章学习目标

在本章中,我们将:

  • 动手实践构建可在本地和完全托管的 GCP 集群上运行的 Dataflow 管道。
  • 构建一个处理文本数据的简单管道。
  • 进而构建一个在分布式工作流中应用 sklearn 模型的管道。

PySpark 用于批处理流水线

Apache Beam