The Linux Foundation Projects
Delta Lake

利用 Delta Lake、Amazon SageMaker 和 EMR 通过开源构建更高效的机器学习数据基础设施

作者:Vedant JainDenny Lee

这篇博文由 Amazon Web Services 高级 AI/ML 专家 SA [Vedant Jain](https://www.linkedin.com/in/vedantjain/) 合著。

当前,由各种数据源驱动的结构化、半结构化和非结构化数据的大量涌入,正在推动利用机器学习提取洞察力并加速创新,从而改变企业和行业。随着这些数据量的持续增长,公司正努力应对管理这些数据的复杂任务,并思考如何利用它们进行分析和 AI。

幸运的是,通过一些原生工具,可以更轻松地访问和转换数据,构建为机器学习 (ML) 模型提供支持的管道,并通过部署到生产环境来管理模型生命周期。在本文中,我们将探讨如何连接 Delta LakeAmazon SageMaker StudioAmazon EMR,从而简化支持数据工程和数据科学项目所需的端到端工作流程。

什么是 Delta Lake?

在开始训练 ML 模型之前,首先需要将所有数据导入到单一存储层中进行 ETL 和共享。Delta Lake 是 AWS 中存储数据的选项之一。Delta Lake 是一个开源存储框架,支持使用包括 Spark、PrestoDB、Flink、Trino 和 Hive 在内的计算引擎以及用于 Scala、Java、Rust 和 Python 的 API 来构建数据湖屋架构。

Delta Lake 库支持以开源 Apache Parquet 文件格式进行读写,并提供 ACID 事务、可扩展元数据处理以及统一的流式和批处理数据处理等功能。Delta Lake 提供了一个存储层 API,可用于将数据存储在 Amazon Simple Storage Service (Amazon S3) 等对象层存储之上。

什么是 Amazon SageMaker Studio?

数据进入 Delta Lake 后,Amazon SageMaker 可以帮助减轻 ML 过程中每个步骤的繁重工作,从而更轻松地开发高质量模型。Amazon SageMaker 是一项完全托管的 ML 服务,它结合了开源的强大功能和专门构建的专有特性,使数据科学家和开发人员能够快速轻松地直接在生产就绪的托管环境中构建、训练和部署模型。集成的 JupyterLab 环境无需管理服务器即可打开数据源进行探索和分析。

图 1:使用 SageMaker Studio 进行端到端机器学习

此外,Amazon SageMaker Studio 是 SageMaker 内置的集成开发环境 (IDE)。它简化了 ML 服务,并通过单个集成 ML 环境提高了生产力。用户可以在统一的视觉界面中构建、训练、调试、部署、监控和分析模型。一体化应用程序通过提供将模型从数据准备到实验再到生产所需的所有工具,加速了 ML 成果。

将 SageMaker Studio 与 Delta Lake 集成

一致可靠的数据是 ML、AI 和数据科学项目普遍的命脉。Delta Lake 存储了高质量的历史数据,这些数据对于驱动企业赖以进行数据驱动决策的洞察力至关重要。SageMaker Studio 为数据从业者提供了多功能环境,可通过可定制的工具构建 ML 解决方案,用于数据摄取、数据处理、模型训练和模型托管。Apache Spark™ 是一种流行的处理框架,与 Delta Lake 配合良好,通过用于加载和操作数据的广泛 API 促进现代数据处理。借助 Delta Lake、SageMaker Studio 和 Apache Spark,用户可以简化数据摄取和训练 ML 模型的过程,从而更快地获得洞察力。虽然有多种方法可以将 Delta Lake 数据读入 SageMaker Studio,但我们将重点放在使用 Delta-Spark 库上。Delta-Spark 是一个 PyPi 软件包,其中包含用于将 Delta Lake 与 Apache Spark 结合使用的 Python API。用户可以选择使用 SageMaker Studio 的默认单一 SageMaker Studio 实例(单节点模式)或使用 Amazon EMR 集群后端(集群模式)以分布式方式读写 Delta Lake 数据。

图 2:SageMaker Studio 访问 Delta Lake 的选项

1. 单节点模式:使用 SageMaker Studio 从 Delta Lake 加载和转换数据

首先,SageMaker Studio 笔记本使用 JupyterLab 环境加载和转换 Delta Lake 格式的数据。我们运行 Spark 命令来读取和写入 CSV 和 Parquet 格式的表数据。开源 delta-spark 库允许用户直接以其原生格式访问数据。通过该库,用户可以利用 API 操作进行数据转换、进行模式更改,并使用 Delta Lake 时间旅行来查看或恢复到数据的先前版本。

如果用户想在单节点实例上对较小的数据集进行原型设计以节省成本,此方法很有用。SageMaker Studio 还允许用户在 Studio 实例本地运行 Spark。在原型设计阶段之后,使用 SageMaker Studio,用户可以方便地访问分布式 Spark 环境,以便使用 SageMaker Studio 和 Amazon EMR 连接(如上图所示)进行数据处理,我们将其称为集群模式。

2. 集群模式:使用 Amazon EMR 从 SageMaker Studio 分布式 Delta Lake 工作负载

Amazon Elastic MapReduce 是一个云大数据平台,用于运行大规模分布式数据处理作业、交互式 SQL 查询和 ML 应用程序,采用 Apache Spark、Apache Hive 和 Presto 等开源分析框架。

通过将 Delta Lake 与 Amazon EMR 结合使用,您可以创建一个事务性数据湖平台,并使用 SageMaker Studio 启动您的笔记本环境,以启动支持多个分析用例所需的底层 EMR 计算集群。

图 3:从 SageMaker Studio 笔记本读写 Delta 表



SageMaker Studio 通过图形和编程方式连接到现有 EMR 集群,支持交互式 EMR 处理。多个内核包括 [SageMaker Studio Analytics Extension](https://pypi.ac.cn/project/sagemaker-studio-analytics-extension/),可实现无缝 EMR 连接并生成用于调试的预签名 Spark UI 链接。用户可以利用 [SparkMagic](https://github.com/jupyter-incubator/sparkmagic) 内核通过 [Livy](http://livy.incubator.apache.org/) 与远程 Spark 集群交互,或者在建立与集群的连接后使用 PyHive 等库。从 SageMaker Studio 启动/关闭、连接和配置 EMR Spark 集群非常简单。一旦建立集群连接并在 EMR 集群上安装了 delta-spark 库,用户就可以使用 SageMaker Studio 界面在 Amazon EMR 的 Spark 环境中运行交互式作业。此外,用户还可以在单个实例(单节点模式)和分布式(集群模式)环境之间快速无缝切换。

图 4:从 SageMaker Studio 部署和管理 EMR Spark 集群

连接 SageMaker Studio 和 Delta Lake 的优势

本文讨论的关键技术正在利用开源框架,即 JupyterLab、Spark 和 Delta Lake,并以用户友好的方式集成,让数据团队能够利用其现有的数据湖并提高数据科学团队的整体生产力。

Delta Lake 是在 AWS 云中存储数据的一个绝佳选择,因为它以开源 Apache Parquet 文件格式进行读写。这种格式使得从可以处理 Parquet 的引擎编写连接器变得容易。

通过这种设计,用户可以以序列化方式更新和替换对象,同时保持对象本身的高并行吞吐量读写性能。Delta Lake 的事务日志包含每个数据文件的详细元数据。这些统计数据比“对象存储中的文件”方法产生更快的元数据搜索。Delta Lake 还提供了一个存储层 API,可以将数据存储在 Amazon S3 等对象层存储之上。总而言之,Delta Lake 的关键功能提供了构建高性能湖屋架构所需的结构。

在 SageMaker Studio 托管的 JupyterLab 环境中读取 Delta Lake 数据后,用户可以访问专用工具来执行所有机器学习 (ML) 开发步骤,从准备数据到以经济高效的方式构建、训练和部署 ML 模型,从而更快地实现价值。

用户还可以受益于 SageMaker 广泛而深入的功能,这些功能是利用开源(以及一些专有)技术构建的,旨在简化机器学习复杂且迭代的过程。要开始使用 Amazon SageMaker 及其端到端机器学习体验,请点击此处

敬请关注集成代码

AWS 和 Databricks 博客即将发布更多集成代码,以帮助您推动 Delta Lake 和 SageMaker Studio 之间的连接。在此期间,通过访问 Delta Lake 在线中心,即可获得 Delta Lake 和 SageMaker Studio 的优势。您可以了解更多信息、下载最新代码并加入 Delta Lake 社区(SlackGroupsYouTubeLinkedInTwitter)。