

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Spark ML 和 Scikit-learn 的特征处理
<a name="inference-pipeline-mleap-scikit-learn-containers"></a>

在使用 Amazon A SageMaker I 内置算法或自定义算法训练模型之前，您可以使用 Spark 和 scikit-learn 预处理器来转换数据和设计功能。

## 使用 Spark ML 的特征处理
<a name="feature-processing-spark"></a>

[你可以使用 SageMaker AI 笔记本中的无服务器 ETL（提取、转换、加载）服务 Glue 运行 Spark ML 作业。AWS](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)您还可以连接到现有 EMR 集群以使用 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) 运行 Spark ML 作业。为此，你需要一个 AWS Identity and Access Management (IAM) 角色来授予从你的 A SageMaker I 笔记本向进行呼叫的权限 AWS Glue。

**注意**  
要了解 AWS Glue 支持哪些 Python 和 Spark 版本，请参阅 [AWS Glue 发行说明](/glue/latest/dg/release-notes.html)。

设计功能后，您可以将 Spark ML 作业打包并序列化 MLeap到 MLeap 容器中，然后将其添加到推理管道中。您不需要使用外部管理的 Spark 集群。使用此方法，您可以从几个示例行无缝扩展到数 TB 的数据。相同的转换器可同时在训练和推理期间使用，因此您不需要重复预处理和特征设计逻辑，或者开发一次性解决方案来保存这些模型。借助推导管道，您不需要维护外部基础设施，可以直接利用数据输入进行预测。

当你在上运行 Spark ML 作业时 AWS Glue，Spark ML 管道会被序列化为[MLeap](https://github.com/combust/mleap)格式。然后，您可以将该作业与 SageMaker AI 推理管[道中的 SparkML 模型服务容器](https://github.com/aws/sagemaker-sparkml-serving-container)一起使用。 *MLeap*是机器学习管道的序列化格式和执行引擎。它支持 Spark、Scikit-Learn 以及 TensorFlow 用于训练管道并将其导出到名为 Bundle 的序列化管道。 MLeap 您可以将捆绑包反序列化回 Spark 以进行批处理模式评分，也可以反序列化到 MLeap运行时以支持实时 API 服务。

有关展示如何使用 Spark ML 进行功能处理的示例，请参阅[在 Amazon EMR 中使用 Apache Spark 训练机器学习模型并在人工智能示例笔记本 SageMaker 中部署](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-python-sdk/sparkml_serving_emr_mleap_abalone)。

## 使用 Scikit-Learn 的特征处理
<a name="feature-processing-with-scikit"></a>

你可以直接在 Amazon AI 中运行 scikit-learn 任务并将其打包到容器中。 SageMaker 在一个 Python 代码示例中，生成通过[费雪鸢尾花卉数据集](http://archive.ics.uci.edu/ml/datasets/Iris)进行训练的 scikit-learn 特征化模型并根据形态指标来预测鸢尾花。有关该示例，请参阅[使用 Sagemaker Scikit-learn 的 IRIS 训练和预测](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit_learn_iris)。