本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在亚马逊上使用 Apache Spark SageMaker
Amazon SageMaker Spark 是一个开源 Spark 库,可帮助您构建 Spark 机器学习 (ML) 管道 SageMaker。这简化了 Spark ML 阶段与 SageMaker 阶段(例如模型训练和托管)的集成。有关 SageMaker Spark 的信息,请参阅 SageMaker Spark
SageMaker Spark 库有 Python 和 Scala 版本。您可以使用 SageMaker Spark 在 Spark 集群中 SageMaker 使用org.apache.spark.sql.DataFrame
数据帧来训练模型。模型训练结束后,您还可以使用 SageMaker 托管服务托管模型。
SageMaker Spark 库提供了以下类等:com.amazonaws.services.sagemaker.sparksdk
-
SageMakerEstimator
- 扩展org.apache.spark.ml.Estimator
接口。您可以在中使用此估算器进行模型训练。 SageMaker -
KMeansSageMakerEstimator
、PCASageMakerEstimator
和XGBoostSageMakerEstimator
- 扩展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 AWS 来管理 Spark 集群,请参阅 A p
将你的 Apache Spark 应用程序与 SageMaker
以下是将 Apache Spark 应用程序与 SageMaker集成的步骤的高级摘要。
-
继续使用您熟悉的 Apache Spark 进行数据预处理。您的数据集仍然是 Spark 集群中的
DataFrame
。将您的数据加载到DataFrame
中并对其进行预处理,从而获得一个features
为org.apache.spark.ml.linalg.Vector
的Doubles
列,以及一个可选的值为label
类型的Double
列。 -
使用 SageMaker Spark 库中的估算器来训练您的模型。例如,如果您选择为模型训练提供的 SageMaker k 均值算法,则会调用该
KMeansSageMakerEstimator.fit
方法。提供您的
DataFrame
作为输入。评估程序返回一个SageMakerModel
对象。注意
SageMakerModel
扩展org.apache.spark.ml.Model
。fit
方法执行以下操作:-
通过从输入
DataFrame
中选择features
和label
列,并将 protobuf 数据上传到 Amazon S3 存储桶,将输入DataFrame
转换为 protobuf 格式。protobuf 格式对于模型训练非常有效。 SageMaker -
SageMaker 通过发送 SageMaker
CreateTrainingJob
请求开始模型训练。模型训练完成后, SageMaker 将模型工件保存到 S3 存储桶中。SageMaker 担任您为模型训练指定的 IAM 角色,代表您执行任务。例如,它使用角色从 S3 存储桶读取训练数据并将模型构件写入存储桶。
-
创建并返回一个
SageMakerModel
对象。构造函数执行以下任务,这些任务与将模型部署到有关 SageMaker。-
向发送
CreateModel
请求 SageMaker。 -
向 SageMaker 发送
CreateEndpointConfig
请求。 -
向发送
CreateEndpoint
请求 SageMaker,然后由该资源启动指定的资源,并在这些资源上托管模型。
-
-
-
您可以从托管在中的模型中 SageMaker 获得推论。
SageMakerModel.transform
提供具有特征的输入
DataFrame
作为输入。transform
方法将其转换为一个包含推理的DataFrame
。在内部,该transform
方法向InvokeEndpoint
SageMaker API 发送请求以获取推论。transform
方法将推理附加到输入DataFrame
中。