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

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

将 Apache Spark 与 Amazon 结合使用SageMaker

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

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

SageMaker Spark 库 com.amazonaws.services.sagemaker.sparksdk 提供以下类及其他类:

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

  • KMeansSageMakerEstimatorPCASageMakerEstimator, 和XGBoostSageMakerEstimator— 扩展SageMakerEstimator类。

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

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

下载 SageMaker Spark 库

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

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

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

    • 使用 pip install:

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

      注意

      EMR 集群必须配置有具有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 库中的评估程序训练您的模型。例如,如果您选择 SageMaker 提供的 k-means 算法进行模型训练,则可以调用 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. 向 SageMaker 发送 CreateModel 请求。

      2. 向 SageMaker 发送 CreateEndpointConfig 请求。

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

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

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