你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Databricks 上 Spark 模型的批量评分

Microsoft Entra ID
Azure Databricks
Azure 数据工厂
Azure Blob 存储

此参考体系结构展示如何生成可缩放的解决方案,以使用 Azure Databricks 定期对 Apache Spark 分类模型进行批量评分。 Azure Databricks 是针对 Azure 优化的基于 Apache Spark 的分析平台。 Azure Databricks 提供三个用于开发数据密集型应用程序的环境:Databricks SQL、Databricks 数据科学与工程以及 Databricks 机器学习。 Databricks 机器学习是一个集成式端到端机器学习环境,其中整合了用于试验跟踪、模型训练、特征开发和管理以及特征与模型传送的托管服务。 可以将此参考体系结构用作可通用化到其他方案的模板。 GitHub 中提供了本体系结构的参考实现。

Apache® 和 Apache Spark® 是 Apache Software Foundation 在美国和/或其他国家/地区的商标或注册商标。 使用这些标记并不暗示获得 Apache Software Foundation 的认可。

体系结构

显示 Azure Databricks 上 Apache Spark 分类模型的批处理评分的示意图。

下载此体系结构的 Visio 文件

工作流

此体系结构根据一组按顺序执行的笔记本,定义了完全包含在 Azure Databricks 中的数据流。 它包含以下组成部分:

数据文件。 此参考实现使用五个静态数据文件中包含的模拟数据集。

数据引入。 数据引入笔记本将输入数据文件下载到 Databricks 数据集的集合中。 在实际应用场景中,IoT 设备中的数据会流式传输到 Databricks 可访问的存储中,如 Azure SQL 或 Azure Blob 存储。 Databricks 支持多个数据源

定型管道。 此笔记本执行特征工程笔记本,以根据引入的数据创建分析数据集。 然后,它执行模型生成笔记本,即使用 Apache Spark MLlib 可缩放机器学习库来定型机器学习模型。

评分管道。 此笔记本执行特征工程笔记本,以根据引入的数据创建评分数据集,同时还执行评分笔记本。 评分笔记本使用定型后的 Spark MLlib 模型,针对评分数据集中的观察结果生成预测。 预测结果存储在结果存储中,这是 Databricks 数据存储中的新数据集。

计划程序。 定期 Databricks 作业使用 Spark 模型来处理批量评分。 此作业执行评分管道笔记本,通过笔记本形参传递变量实参,以指定关于构造评分数据集,以及结果数据集存储位置的详细信息。

解决方案详细信息

此应用场景构造为管道流。 每个笔记本都更适合在批量上下文中执行每个操作:引入、特征工程、模型生成和模型评分。 特征工程笔记本旨在为任何定型、校准、测试或评分操作生成通用数据集。 在此应用场景中,我们对这些操作使用临时拆分策略,以便将笔记本形参用于设置日期范围筛选。

因为此应用场景创建了批处理管道,所以我们提供了一组可选的检查笔记本来探索管道笔记本的输出。 可以在 GitHub 存储库笔记本文件夹中找到这些笔记本:

  • 1a_raw-data_exploring.ipynb
  • 2a_feature_exploration.ipynb
  • 2b_model_testing.ipynb
  • 3b_model_scoring_evaluation.ipynb

可能的用例

资产密集型行业中的某企业希望最大限度地减少与意外机械故障相关的成本和故障时间。 使用从计算机收集的 IoT 数据,他们可以创建预测性维护模型。 借助此模型,企业可以主动维护组件,并维修组件以免它们发生故障。 通过最大限度地利用机械组件,他们可以控制成本,并减少故障时间。

预测性维护模型从计算机收集数据,并保留组件故障的历史示例。 然后,此模型可用于监视组件的当前状态,并预测给定组件是否会很快出现故障。 有关常见用例和建模方法,请参阅 Azure AI 预测性维护解决方案指南

此参考体系结构专为组件计算机中的新数据触发的工作负载而设计。 包括以下处理步骤:

  1. 将数据从外部数据存储引入到 Azure Databricks 数据存储中。

  2. 将数据转换为定型数据集,再生成 Spark MLlib 模型,从而定型机器学习模型。 MLlib 包含最常用的机器学习算法和实用工具,它们更适合利用 Spark 数据可伸缩性功能。

  3. 将数据转换为评分数据集,以通过应用定型后的模型来预测(分类)组件故障。 使用 Spark MLLib 模型对数据进行评分。

  4. 将结果存储在 Databricks 数据存储中,以供在处理后使用。

GitHub 上提供了执行上述每项任务的笔记本。

建议

Databricks 已经过设置,可便于加载和部署定型后的模型,以使用新数据进行预测。 Databricks 还提供其他优势:

  • 使用 Microsoft Entra 凭据的单一登录支持。
  • 执行生产管道作业的作业计划程序。
  • 包含协作功能、仪表板、REST API 的完全交互式笔记本。
  • 可以缩放到任意大小的无限个群集。
  • 高级安全性、基于角色的访问控制和审核日志。

若要与 Azure Databricks 服务进行交互,请使用 Web 浏览器中的 Databricks 工作区界面,或使用命令行接口 (CLI)。 从任何支持 Python 2.7.9 到 3.6 的平台访问 Databricks CLI。

此参考实现使用笔记本按顺序执行任务。 每个笔记本将中间数据项目(定型、测试、评分或结果数据集)存储到输入数据所在的相同数据存储中。 目标是可便于根据需要在特定用例中轻松使用它。 实际上,可以将数据源连接到 Azure Databricks 实例,这样笔记本就能直接在存储中读取和写回数据。

根据需要通过 Databricks 用户界面、数据存储或 Databricks CLI 来监视作业执行情况。 使用事件日志以及 Databricks 提供的其他指标来监视群集。

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

性能

Azure Databricks 群集默认启用自动缩放,这样在运行时期间,Databricks 可以动态重新分配工作进程,以将作业特征考虑在内。 管道的某些部分在计算方面的要求可能比另一些部分更高。 Databricks 会在作业的这些阶段添加其他工作进程(并在不再需要它们时将其删除)。 通过自动缩放,可以更轻松地实现高群集利用率,因为无需通过预配群集来匹配工作负载。

通过将 Azure 数据工厂与 Azure Databricks 结合使用,可以开发更复杂的定期管道。

存储

在此参考实现中,为了简单起见,数据直接存储在 Databricks 存储中。 不过,在生产上下文中,可以把数据存储在 Azure Blob 存储等云数据存储中。 Databricks 还支持 Azure Data Lake StoreAzure SQL 数据仓库Azure Cosmos DBApache KafkaApache Hadoop

成本优化

成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述

通常,使用 Azure 定价计算器来估算成本。 Microsoft Azure 架构良好的框架的“成本”部分描述了其他注意事项。

Azure Databricks 是一项有相关成本的 Spark 高级产品/服务。 此外,还有标准和高级 Databricks 定价层

对于此应用场景,标准定价层就足够了。 不过,如果具体应用程序需要自动缩放群集来处理更大的工作负载或交互式 Databricks 仪表板,高级级别可能会进一步增加成本。

解决方案笔记本可以在任何基于 Spark 的平台上运行,只需一点点编辑,即可删除 Databricks 专用包。 请参阅以下适用于各种 Azure 平台的类似解决方案:

部署此方案

若要部署此参考体系结构,请按照 GitHub 存储库中的步骤操作,生成可缩放的解决方案,以在 Azure Databricks 中对 Spark 模型进行批量评分。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

首席作者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤