本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Apache Spark 与 Amazon SageMaker 结合使用
本节为希望使用 Apache Spark 进行数据预处理和亚马逊的开发人员提供信息。 SageMaker ,用于模型训练和托管。有关 Apache Spark 的受支持版本的信息,请参阅获取 SageMaker Spark
SageMaker 在 Python 和 Scala 中都提供一个 Apache Spark 库,该库能让您通过使用它在中训练模型。 SageMaker 使用org.apache.spark.sql.DataFrame
Spark 集群中的数据帧。在模型训练后,您还可以使用来托管模型。 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 中托管模型并获取推理。
与 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 集成的步骤的高度概括。
-
继续使用您熟悉的 Apache Spark 进行数据预处理。您的数据集仍然是 Spark 集群中的
DataFrame
。将您的数据加载到DataFrame
中并对其进行预处理,从而获得一个features
为org.apache.spark.ml.linalg.Vector
的Doubles
列,以及一个可选的值为label
类型的Double
列。 -
使用中的估计器 SageMaker Spark 库来训练您的模型。例如,如果您选择提供的 k-means 算法。 SageMaker 对于模型训练,请调用
KMeansSageMakerEstimator.fit
方法。提供您的
DataFrame
作为输入。评估程序返回一个SageMakerModel
对象。注意
SageMakerModel
扩展org.apache.spark.ml.Model
。fit
方法执行以下操作:-
转换输入
DataFrame
通过选择以下方式转换为 protobuf 格式features
和label
来自输入的列DataFrame
并将 protobuf 数据上载到 Amazon S3 存储桶。protobuf 格式对于 SageMaker 中的模型训练是有效的。 -
于中开始模型训练 SageMaker 发送 SageMaker
CreateTrainingJob
请求. 模特训练完成后, SageMaker 将模型构件保存到 S3 存储桶。SageMaker 采用您为模型训练指定的 IAM 角色,以代表您执行任务。例如,它使用角色从 S3 存储桶读取训练数据并将模型构件写入存储桶。
-
创建并返回一个
SageMakerModel
对象。构造函数执行以下任务,这些任务与将模型部署到 SageMaker 中相关。-
发送
CreateModel
向 SageMaker 发出请求。 -
发送
CreateEndpointConfig
向 SageMaker 发出请求。 -
发送
CreateEndpoint
向 SageMaker 发出请求,该请求随后会启动指定的资源,并在其上托管模型。
-
-
-
您可以从中托管的模型获取推理 SageMaker 使用
SageMakerModel.transform
.提供具有特征的输入
DataFrame
作为输入。transform
方法将其转换为一个包含推理的DataFrame
。在内部,transform
方法将请求发送到InvokeEndpoint
SageMaker API 来获取推论。transform
方法将推理附加到输入DataFrame
中。