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

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

在亚马逊上使用 Apache Spark SageMaker

Amazon SageMaker Spark 是一个开源 Spark 库,可帮助您构建 Spark 机器学习 (ML) 管道 SageMaker。这简化了 Spark ML 阶段与 SageMaker 阶段(例如模型训练和托管)的集成。有关 SageMaker Spark 的信息,请参阅 SageMaker Spark GitHub 存储库。

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

除其他外com.amazonaws.services.sagemaker.sparksdk, SageMaker Spark 库提供了以下类:

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

  • KMeansSageMakerEstimatorPCASageMakerEstimatorXGBoostSageMakerEstimator - 扩展 SageMakerEstimator 类。

  • SageMakerModel - 扩展 org.apache.spark.ml.Model 类。您可以将其SageMakerModel用于模型托管和在中获取推论。 SageMaker

你可以从 Spark GitHub 存储库中下载 Python Spark (PySpark) 和 Scala 库的SageMaker 源代码。

有关 SageMaker Spark 库的安装和示例,请参阅SageMaker 斯卡拉的 Spark 示例SageMaker Spark for Python (PySpark) 示例

如果你使用亚马逊 EMR Amazon 来管理 Spark 集群,请参阅 A p ache Spark。有关在中使用 Amazon EMR 的更多信息 SageMaker,请参阅。使用 Amazon EMR 准备数据

将你的 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 均值算法,则会调用该KMeansSageMakerEstimator.fit方法。

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

    注意

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

    fit 方法执行以下操作:

    1. 通过从输入 DataFrame 中选择 featureslabel 列,并将 protobuf 数据上传到 Amazon S3 存储桶,将输入 DataFrame 转换为 protobuf 格式。protobuf 格式对于模型训练非常有效。 SageMaker

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

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

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

      1. 向发送CreateModel请求 SageMaker。

      2. 向 SageMaker 发送 CreateEndpointConfig 请求。

      3. 向发送CreateEndpoint请求 SageMaker,然后由其启动指定的资源,并在这些资源上托管模型。

  3. 您可以从托管在中的模型中 SageMaker 获得推论。SageMakerModel.transform

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