将 Apache Spark 与 Amazon SageMaker 结合使用 - 亚马逊 SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将 Apache Spark 与 Amazon SageMaker 结合使用

本节为希望使用 Apache Spark 进行数据预处理和亚马逊的开发人员提供信息。 SageMaker ,用于模型训练和托管。有关 Apache Spark 的受支持版本的信息,请参阅获取 SageMaker Spark页面中的 SageMaker Spark GitHub 存储库。

SageMaker 在 Python 和 Scala 中都提供一个 Apache Spark 库,该库能让您通过使用它在中训练模型。 SageMaker 使用org.apache.spark.sql.DataFrameSpark 集群中的数据帧。在模型训练后,您还可以使用来托管模型。 SageMaker 托管服务。

这些区域有: SageMaker Spark 库com.amazonaws.services.sagemaker.sparksdk,提供以下类等:

  • SageMakerEstimator— 扩展org.apache.spark.ml.Estimator接口。您可以在 SageMaker 中使用此估计程序进行模型训练。

  • KMeansSageMakerEstimatorPCASageMakerEstimator, 和XGBoostSageMakerEstimator— 扩展SageMakerEstimator类。

  • SageMakerModel— 扩展org.apache.spark.ml.Model类。您可以使用此SageMakerModel用于在 SageMaker 中托管模型并获取推理。

与 SageMaker Studio,您可以轻松地连接到 Amazon EMR 集群。有关更多信息,请参阅 。使用 Studio 笔记本大规模准备数据.

下载 SageMaker Spark 库

您可以使用以下选项来下载 Spark Spark Spark Spark Spark SageMaker 提供的库:

  • 您可以下载两者的源代码 PySpark 和 Scala 图书馆来自SageMaker Spark GitHub 存储库。

  • 对于 Python Spark 库,您有以下附加选项:

    • 使用 pip install:

      pip install sagemaker_pyspark
    • 在笔记本实例中,创建使用Sparkmagic (PySpark)或者Sparkmagic (PySpark3)内核并连接到远程 Amazon EMR 群集。

      注意

      EMR 集群必须配置有一个 IAM 角色,该角色具有AmazonSageMakerFullAccess附加策略。有关为 EMR 群集配置角色的信息,请参阅将针对 Amazon EMR 权限的 IAM 角色配置为Amazon服务中的Amazon EMR 管理指南.

       

  • 您可以从 Maven 获取 Scala 库。通过向 pom.xml 文件添加以下依赖项,将 Spark 库添加到项目中:

    <dependency> <groupId>com.amazonaws</groupId> <artifactId>sagemaker-spark_2.11</artifactId> <version>spark_2.2.0-1.0</version> </dependency>

将您的 Apache Spark 应用程序与 SageMaker 集成

以下是将 Apache Spark 应用程序与 SageMaker 集成的步骤的高度概括。

  1. 继续使用您熟悉的 Apache Spark 进行数据预处理。您的数据集仍然是 Spark 集群中的 DataFrame。将您的数据加载到 DataFrame 中并对其进行预处理,从而获得一个 featuresorg.apache.spark.ml.linalg.VectorDoubles 列,以及一个可选的值为 label​ 类型的 Double 列。

  2. 使用中的估计器 SageMaker Spark 库来训练您的模型。例如,如果您选择提供的 k-means 算法。 SageMaker 对于模型训练,请调用KMeansSageMakerEstimator.fit方法。

    提供您的 DataFrame 作为输入。评估程序返回一个 SageMakerModel 对象。

    注意

    SageMakerModel 扩展 org.apache.spark.ml.Model

    fit 方法执行以下操作:

    1. 转换输入DataFrame通过选择以下方式转换为 protobuf 格式featureslabel来自输入的列DataFrame并将 protobuf 数据上载到 Amazon S3 存储桶。protobuf 格式对于 SageMaker 中的模型训练是有效的。

    2. 于中开始模型训练 SageMaker 发送 SageMaker CreateTrainingJob请求. 模特训练完成后, SageMaker 将模型构件保存到 S3 存储桶。

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

    3. 创建并返回一个 SageMakerModel 对象。构造函数执行以下任务,这些任务与将模型部署到 SageMaker 中相关。

      1. 发送CreateModel向 SageMaker 发出请求。

      2. 发送CreateEndpointConfig向 SageMaker 发出请求。

      3. 发送CreateEndpoint向 SageMaker 发出请求,该请求随后会启动指定的资源,并在其上托管模型。

  3. 您可以从中托管的模型获取推理 SageMaker 使用SageMakerModel.transform.

    提供具有特征的输入 DataFrame 作为输入。transform 方法将其转换为一个包含推理的 DataFrame。在内部,transform方法将请求发送到InvokeEndpoint SageMaker API 来获取推论。transform 方法将推理附加到输入 DataFrame 中。