Logo
Section 1 / 25

批处理管道中的 PySpark 简介

了解用于批处理管道的 PySpark。

导入

批处理管道中的 PySpark 简介

了解用于批处理管道的 PySpark。

概述

Spark 是一种通用的计算框架,能够处理海量数据。它在 Hadoop 和 MapReduce 等早期大数据工具的基础上构建,同时显著提升了所支持语言的表达能力。Spark 的核心组件之一是弹性分布式数据集(RDD),它使机器集群能够以协调且容错的方式执行任务。在 Spark 的较新版本中,DataFrame API 在 RDD 之上提供了更高层次的抽象,其数据结构类似于 R 和 Pandas 中的 DataFrame。PySpark 是 Spark 的 Python 接口,为在分布式计算环境中处理大规模数据集提供了编程 API。

PySpark 在数据科学中的应用

PySpark 对数据科学家而言是一项极为有价值的工具,因为它可以简化将原型模型转化为生产级模型流程的过程。在 Zynga,我们的数据科学团队维护多个生产级系统,为游戏和市场团队提供关键信号。通过使用 PySpark,我们显著减少了工程团队在将模型从概念扩展到生产过程中所需的支持工作。

提升可扩展性

截至目前,本课程中我们构建和部署的所有模型都面向单机环境。虽然我们可以通过 Lambda、ECS 和 GKS 实现跨多台机器的服务扩展,但这些容器彼此独立运行,节点之间缺乏协调。而借助 PySpark,我们可以构建专为集群环境设计的模型流程,适用于模型训练和模型服务两个阶段。

这意味着数据科学家现在能够解决比以往更大规模的问题。相比 MapReduce 等传统方案,PySpark 在语言表达能力和 API 友好性方面实现了良好平衡。一个普遍趋势是,随着越来越多的数据科学与工程团队转向 Spark 生态,Hadoop 的使用正在逐步减少。

下一章我们将介绍另一种用于数据科学的分布式计算生态——Cloud Dataflow。但目前而言,Spark 是该领域领先的开源解决方案。PySpark 也是我当初从 R 转向 Python 进行数据科学工作的主要动因之一。

目标

本章旨在为 Python 开发者介绍 PySpark,并展示如何构建适用于批量评分场景的大规模模型流水线——例如需要对数十亿条记录和数百万用户进行评分的应用。

尽管生产级系统通常会将结果推送至应用数据库,但在本章中,我们将聚焦于批处理流程:从数据湖读取数据,并将处理结果写回数据湖,供其他系统使用。我们将探讨在 AWS 和 GCP 上实现模型应用的流水线。

尽管本章使用的数据集存储在 AWS 和 GCP 上,但 Spark 环境并不局限于这两个平台,也可运行于 Azure、其他云服务商或本地部署的 Spark 集群。

本章学习目标

本章将涵盖多种不同主题,展示 PySpark 在可扩展模型流水线中的各种应用场景。

首先介绍如何将 S3 上的数据提供给 Spark 使用,然后重点讲解 PySpark 基础知识,特别是 DataFrame 的操作。接着,我们将构建一个预测模型流水线,该流水线从 S3 读取数据,执行批量模型预测,并将结果写回 S3。

随后,我们将演示如何利用 PySpark 的一项新特性——Pandas UDF(用户自定义函数),实现分布式的深度学习和特征工程。

最后,我们将构建另一个批处理模型流水线,这次基于 GCP 平台,并讨论如何在 Spark 生态中将工作流产品化。

模型管道的工作流工具

Spark 运行环境