

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SageMaker AI での Apache Spark
<a name="apache-spark"></a>

Amazon SageMaker Spark は、SageMaker AI を使用して Spark 機械学習 (ML) パイプラインを構築するのに役立つオープンソースの Spark ライブラリです。これにより、モデルのトレーニングやホスティングなど、SparkML ステージと SageMaker AI ステージの統合が簡素化されます。SageMaker AI Spark の詳細については、「[SageMaker AI Spark](https://github.com/aws/sagemaker-spark)」の GitHub リポジトリを参照してください。以下のトピックでは、SageMaker AI で Apache Spark を使用する方法について説明します。

SageMaker AI Spark ライブラリは Python と Scala で利用できます。SageMaker AI Spark を使用して、Spark クラスター内の `org.apache.spark.sql.DataFrame` データフレームを使用して SageMaker AI でモデルをトレーニングできます。モデルトレーニング後に、SageMaker AI ホスティングサービスを使ってモデルをホストすることもできます。

SageMaker AI Spark ライブラリ `com.amazonaws.services.sagemaker.sparksdk` には、特に次のようなクラスが用意されています。
+ `SageMakerEstimator` - `org.apache.spark.ml.Estimator` インターフェイスを拡張します。この推定ツールは、SageMaker AI でのモデルトレーニングに使用できます。
+ `KMeansSageMakerEstimator`、`PCASageMakerEstimator`、`XGBoostSageMakerEstimator` - `SageMakerEstimator` クラスを拡張します。
+ `SageMakerModel` - `org.apache.spark.ml.Model` クラスを拡張します。この `SageMakerModel` は、SageMaker AI でのモデルのホスティングと推論に使用できます。

Python Spark (PySpark) と Scala ライブラリのソースコードはともに、[SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub リポジトリからダウンロードできます。

SageMaker AI Spark ライブラリのインストールと例については、「[SageMaker AI Spark for Scala の例](apache-spark-example1.md)」または「[SageMaker AI Spark for Python (PySpark) を使用するためのリソースの例](apache-spark-additional-examples.md)」を参照してください。

で Amazon EMR を使用して Spark クラスターを管理する場合は、 AWS [「Apache Spark](https://aws.amazon.com/emr/features/spark/)」を参照してください。SageMaker AI での Amazon EMR の使用の詳細については、「[Amazon EMR を使用したデータ準備](studio-notebooks-emr-cluster.md)」を参照してください。

**Topics**
+ [Apache Spark アプリケーションを SageMaker AI と統合する](#spark-sdk-common-process)
+ [SageMaker AI Spark for Scala の例](apache-spark-example1.md)
+ [SageMaker AI Spark for Python (PySpark) を使用するためのリソースの例](apache-spark-additional-examples.md)

## Apache Spark アプリケーションを SageMaker AI と統合する
<a name="spark-sdk-common-process"></a>

Apache Spark アプリケーションを SageMaker AI と統合するステップの概要を次に示します。

1. 使い慣れている Apache Spark ライブラリを使用してデータの事前処理を続行します。データセットは Spark クラスター内で `DataFrame` のまま残ります。データを `DataFrame` にロードします。`org.apache.spark.ml.linalg.Vector` が `Doubles` の `features` 列とオプションの `label` 列が `Double`​ 型の値を持つように、前処理を行います。

1. SageMaker AI Spark ライブラリ内で推定ツールを使ってモデルのトレーニングを行います。例えば、モデルトレーニングに SageMaker AI 提供の k-means アルゴリズムを選択した場合、`KMeansSageMakerEstimator.fit` メソッドを呼び出します。

   `DataFrame` を入力として指定します。推定器は `SageMakerModel` オブジェクトを返します。
**注記**  
`SageMakerModel` は `org.apache.spark.ml.Model` を拡張します。

   `fit` メソッドは、次のような処理を実行します。

   1. 入力 `DataFrame` を protobuf 形式に変換します。これは、入力 `DataFrame` から `features` と `label` 列を選択することで実行できます。次に、protobuf データを Amazon S3 バケットにアップロードします。protobuf 形式は、SageMaker AI でのモデルトレーニングに効率的です。

   1. SageMaker AI に [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストを送信することで、SageMaker AI でのモデルトレーニングを開始します。モデルトレーニングが完了すると、SageMaker AI はモデルのアーティファクトを S3 バケットに保存します。

      SageMaker AI は、モデルトレーニングのために指定されている IAM ロールを継承し、代理としてタスクを実行します。例えば、このロールを使用して、S3 バケットからトレーニングデータを読み取り、モデルアーティファクトをバケットに書き込みます。

   1. `SageMakerModel` オブジェクトを作成して返します。モデルを SageMaker AI にデプロイすることに関連して、コンストラクターは次のタスクを実行します。

      1. SageMaker AI に [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) リクエストを送信します。

      1. SageMaker AI に [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) リクエストを送信します。

      1. SageMaker AI に [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) リクエストを送信します。これにより、SageMaker AI は指定されたリソースを起動し、そのリソース上でモデルをホストします。

1. `SageMakerModel.transform` を使って、SageMaker AI でホストされているモデルから推論を取得できます。

   特徴が指定された入力 `DataFrame` を入力として指定します。`transform` メソッドがそれを推論が含まれる `DataFrame` メソッドに変換します。内部的には、`transform` メソッドは [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html) SageMaker API にリクエストを送信して推論を取得します。この `transform` メソッドは、推論を入力 `DataFrame` に追加します。