

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

# Apache Spark 搭载亚马逊 A SageMaker I
<a name="apache-spark"></a>

Amazon SageMaker AI Spark 是一个开源 Spark 库，可帮助您使用 SageMaker 人工智能构建 Spark 机器学习 (ML) 管道。这简化了 Spark ML 阶段与 SageMaker AI 阶段（例如模型训练和托管）的集成。有关 SageMaker AI Spark 的信息，请参阅 [SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub 存储库。以下主题提供了学习如何在 SageMaker 人工智能中使用 Apache Spark 的信息。

 SageMaker AI Spark 库有 Python 和 Scala 版本。你可以使用 SageMaker AI Spark 在 Spark 集群中使用`org.apache.spark.sql.DataFrame`数据帧在 SageMaker AI 中训练模型。模型训练结束后，您还可以使用 SageMaker AI 托管服务托管模型。

A SageMaker I Spark 库提供了以下类等：`com.amazonaws.services.sagemaker.sparksdk`
+ `SageMakerEstimator` - 扩展 `org.apache.spark.ml.Estimator` 接口。您可以使用此估算器在 AI 中进行模型训练。 SageMaker 
+ `KMeansSageMakerEstimator`、`PCASageMakerEstimator` 和 `XGBoostSageMakerEstimator` - 扩展 `SageMakerEstimator` 类。
+ `SageMakerModel` - 扩展 `org.apache.spark.ml.Model` 类。你可以用它在 SageMaker AI 中托管模型和获取推论。`SageMakerModel`

你可以从 [SageMaker AI](https://github.com/aws/sagemaker-spark) Spark 存储库中下载 Python Spark (PySpark) 和 Scala GitHub 库的源代码。

有关 SageMaker AI Spark 库的安装和示例，请参阅[SageMaker 适用于 Scala 的人工智能 Spark](apache-spark-example1.md)或[使用 SageMaker AI Spark for Python 的资源 (PySpark) 示例](apache-spark-additional-examples.md)。

如果你使用亚马逊 EMR Amazon 来管理 Spark 集群，请参阅 A [p](https://www.amazonaws.cn/emr/features/spark/) ache Spark。有关在 A SageMaker I 中使用 Amazon EMR 的更多信息，请参阅。[使用 Amazon EMR 准备数据](studio-notebooks-emr-cluster.md)

**Topics**
+ [将你的 Apache Spark 应用程序与 SageMaker 人工智能集成](#spark-sdk-common-process)
+ [SageMaker 适用于 Scala 的人工智能 Spark](apache-spark-example1.md)
+ [使用 SageMaker AI Spark for Python 的资源 (PySpark) 示例](apache-spark-additional-examples.md)

## 将你的 Apache Spark 应用程序与 SageMaker 人工智能集成
<a name="spark-sdk-common-process"></a>

以下是将 Apache Spark 应用程序与 A SageMaker I 集成的步骤的高级摘要。

1. 继续使用您熟悉的 Apache Spark 进行数据预处理。您的数据集仍然是 Spark 集群中的 `DataFrame`。将数据载入 `DataFrame`。预处理后，就有了一个 `features` 列，其中的 `org.apache.spark.ml.linalg.Vector` 值为 `Doubles`，还有一个可选的 `label` 列，其中的值为 `Double`？

1. 使用 SageMaker AI Spark 库中的估算器来训练您的模型。例如，如果您选择 SageMaker AI 提供的 k-means 算法进行模型训练，请调用该`KMeansSageMakerEstimator.fit`方法。

   提供您的 `DataFrame` 作为输入。评估程序返回一个 `SageMakerModel` 对象。
**注意**  
`SageMakerModel` 扩展 `org.apache.spark.ml.Model`。

   `fit` 方法执行以下操作：

   1. 将输入 `DataFrame` 转换为 protobuf 格式。它从输入的 `DataFrame` 中选择 `features` 和 `label` 列。然后，它会将 protobuf 数据上传到 Amazon S3 存储桶。protobuf 格式对于 AI 中的 SageMaker 模型训练非常有效。

   1. 通过发送 SageMaker AI [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTrainingJob.html)请求开始在 AI 中进行 SageMaker 模型训练。模型训练完成后， SageMaker AI 会将模型工件保存到 S3 存储桶中。

      SageMaker AI 扮演您为模型训练指定的 IAM 角色，代表您执行任务。例如，它使用角色从 S3 存储桶读取训练数据并将模型构件写入存储桶。

   1. 创建并返回一个 `SageMakerModel` 对象。构造函数执行以下任务，这些任务与将模型部署到 SageMaker AI 有关。

      1. 向 SageMaker AI 发送[https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateModel.html)请求。

      1. 向 SageMaker AI 发送[https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)请求。

      1. 向 SageMaker AI 发送[https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateEndpoint.html)请求，AI 随后启动指定的资源，并在这些资源上托管模型。

1. 您可以使用从 SageMaker AI 中托管的模型中获得推论。`SageMakerModel.transform`

   提供具有特征的输入 `DataFrame` 作为输入。`transform` 方法将其转换为一个包含推理的 `DataFrame`。在内部，该`transform`方法向 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html) SageMaker API 发送请求以获取推论。`transform` 方法将推理附加到输入 `DataFrame` 中。