

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

# の開始方法 AWS CLI
<a name="gs-cli"></a>

コマンドを使用して から EMR Serverless の使用を開始し、アプリケーション AWS CLI の作成、ジョブの実行、ジョブ実行出力の確認、リソースの削除を行います。

## ステップ 1: EMR Serverless アプリケーションを作成する
<a name="gs-application-cli"></a>

最初の EMR Serverless アプリケーションを構築するには、[https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CreateApplication.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CreateApplication.html) コマンドを使用します。使用するアプリケーションバージョンに関連付けられたアプリケーションタイプと Amazon EMR リリースラベルを指定する必要があります。アプリケーションの名前はオプションです。

------
#### [ Spark ]

Spark SQL アプリケーションを作成するには、次のコマンドを実行します。

```
aws emr-serverless create-application \
    --release-label emr-6.6.0 \
    --type "SPARK" \
    --name my-application
```

------
#### [ Hive ]

Hive アプリケーションを作成するには、次のコマンドを実行します。

```
aws emr-serverless create-application \
    --release-label emr-6.6.0 \
    --type "HIVE" \
    --name my-application
```

------

出力で返されるアプリケーション ID を書き留めます。アプリケーションの起動とジョブの送信に この ID を使用します。以後は `application-id` として参照します。

[ステップ 2: EMR Serverless アプリケーションにジョブ実行を送信する](#gs-job-run-cli) に進む前に、アプリケーションが [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_GetApplication.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_GetApplication.html) API で `CREATED` 状態に達していることを確認してください。

```
aws emr-serverless get-application \
    --application-id application-id
```

EMR Serverless は、リクエストされたジョブに対応するワーカーを作成します。デフォルトでは、これらはオンデマンドで作成されますが、アプリケーションの作成時に `initialCapacity` パラメータを設定することで、事前に初期化された容量を指定することもできます。`maximumCapacity` パラメータを使用して、アプリケーションが使用できる最大容量の合計を制限することもできます。これらのオプションの詳細については、「[EMR Serverless を使用する際のアプリケーションの設定](application-capacity.md)」を参照してください。

## ステップ 2: EMR Serverless アプリケーションにジョブ実行を送信する
<a name="gs-job-run-cli"></a>

これで、EMR Serverless アプリケーションはジョブを実行する準備が整いました。

------
#### [ Spark ]

このステップでは、PySpark スクリプトを使用して、複数のテキストファイルにわたる一意の単語の出現数を計算します。パブリックで読み取り専用の S3 バケットには、スクリプトとデータセットの両方が保存されます。アプリケーションは、Spark ランタイムの出力ファイルとログデータを、作成した S3 バケットの `/output` および `/logs` ディレクトリに送信します。

**Spark ジョブを実行するには**

1. 次のコマンドを使用して、実行するサンプルスクリプトを新しいバケットにコピーします。

   ```
   aws s3 cp s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py s3://amzn-s3-demo-bucket/scripts/
   ```

1. 次のコマンドで、`application-id` をアプリケーション ID に置き換えます。`job-role-arn` を [ジョブランタイムロールを作成する](getting-started.md#gs-runtime-role) で作成したランタイムロール ARN に置き換えます。*`job-run-name`* をジョブ実行を呼び出す名前に置き換えます。すべての `amzn-s3-demo-bucket` の文字列を作成した Amazon S3 バケットに置き換え、`/output` をパスに追加します。これにより、バケットに新しいフォルダが作成され、EMR Serverless はアプリケーションの出力ファイルをコピーできます。

   ```
   aws emr-serverless start-job-run \
       --application-id application-id \
       --execution-role-arn job-role-arn \
       --name job-run-name \
       --job-driver '{
           "sparkSubmit": {
             "entryPoint": "s3://amzn-s3-demo-bucket/scripts/wordcount.py",
             "entryPointArguments": ["s3://amzn-s3-demo-bucket/emr-serverless-spark/output"],
             "sparkSubmitParameters": "--conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1"
           }
       }'
   ```

1. 出力で返されるジョブ実行 ID を書き留めておいてください。次の手順で、`job-run-id` をこの ID に置き換えます。

------
#### [ Hive ]

このチュートリアルでは、テーブルを作成し、いくつかのレコードを挿入して、カウント集計クエリを実行します。Hive ジョブを実行するには、まず、単一のジョブの一部として実行するすべての Hive クエリを含むファイルを作成し、ファイルを S3 にアップロードして、Hive ジョブを開始するときにこの S3 パスを指定します。

**Hive ジョブを実行するには**

1. Hive ジョブで実行するすべてのクエリを含む `hive-query.ql` というファイルを作成します。

   ```
   create database if not exists emrserverless;
   use emrserverless;
   create table if not exists test_table(id int);
   drop table if exists Values__Tmp__Table__1;
   insert into test_table values (1),(2),(2),(3),(3),(3);
   select id, count(id) from test_table group by id order by id desc;
   ```

1. 次のコマンドを使用して、`hive-query.ql` を S3 バケットにアップロードします。

   ```
   aws s3 cp hive-query.ql s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql
   ```

1. 次のコマンドで、`application-id` を独自のアプリケーション ID に置き換えます。`job-role-arn` を [ジョブランタイムロールを作成する](getting-started.md#gs-runtime-role) で作成したランタイムロール ARN に置き換えます。すべての `amzn-s3-demo-bucket` の文字列を作成した Amazon S3 バケットに置き換え、`/output` と `/logs` をパスに追加します。これにより、バケットに新しいフォルダが作成され、EMR Serverless はアプリケーションの出力ファイルとログファイルをコピーできます。

   ```
   aws emr-serverless start-job-run \
       --application-id application-id \
       --execution-role-arn job-role-arn \
       --job-driver '{
           "hive": {
             "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql",
             "parameters": "--hiveconf hive.log.explain.output=false"
           }
       }' \
       --configuration-overrides '{
         "applicationConfiguration": [{
           "classification": "hive-site",
             "properties": {
               "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch",
               "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse",
               "hive.driver.cores": "2",
               "hive.driver.memory": "4g",
               "hive.tez.container.size": "4096",
               "hive.tez.cpu.vcores": "1"
               }
           }],
           "monitoringConfiguration": {
             "s3MonitoringConfiguration": {
               "logUri": "s3://amzn-s3-demo-bucket/emr-serverless-hive/logs"
              }
           }
       }'
   ```

1. 出力で返されるジョブ実行 ID を書き留めておいてください。次の手順で、`job-run-id` をこの ID に置き換えます。

------

## ステップ 3: ジョブ実行の出力を確認する
<a name="gs-output-cli"></a>

ジョブの実行には通常、完了までに 3～5 分を要します。

------
#### [ Spark ]

次のコマンドを使用して、Spark ジョブの状態を確認できます。

```
aws emr-serverless get-job-run \
    --application-id application-id \
    --job-run-id job-run-id
```

ログの送信先を `s3://amzn-s3-demo-bucket/emr-serverless-spark/logs` に設定すると、この特定のジョブ実行のログを `s3://amzn-s3-demo-bucket/emr-serverless-spark/logs/applications/application-id/jobs/job-run-id` で確認できます。

Spark アプリケーションの場合、EMR Serverless は 30 秒ごとにイベントログを S3 ログ送信先の `sparklogs` フォルダにプッシュします。ジョブが完了すると、ドライバーとエグゼキューターの Spark ランタイムログが、`driver` や `executor` などのワーカータイプによって適切に名前が付けられたフォルダにアップロードされます。PySpark ジョブの出力が `s3://amzn-s3-demo-bucket/output/` にアップロードされます。

------
#### [ Hive ]

以下のコマンドを使用して Hive ジョブの状態を確認できます。

```
aws emr-serverless get-job-run \
    --application-id application-id \
    --job-run-id job-run-id
```

ログの送信先を `s3://amzn-s3-demo-bucket/emr-serverless-hive/logs` に設定すると、この特定のジョブ実行のログを `s3://amzn-s3-demo-bucket/emr-serverless-hive/logs/applications/application-id/jobs/job-run-id` で確認できます。

Hive アプリケーションの場合、EMR Serverless は Hive ドライバーを S3 ログ送信先の `HIVE_DRIVER` フォルダに、Tez タスクログを `TEZ_TASK` フォルダに継続的にアップロードします。ジョブの実行が `SUCCEEDED` 状態に達すると、Hive クエリの出力は、`configurationOverrides` の `monitoringConfiguration` フィールドで指定した Amazon S3 ロケーションで使用可能になります。

------

## ステップ 4: クリーンアップする
<a name="gs-cleanup-cli"></a>

このチュートリアルの操作が完了したら、作成したリソースの削除を検討してください。再度使用しないリソースをリリースすることをお勧めします。

### アプリケーションを削除する
<a name="delete-application-cli"></a>

アプリケーションを削除するには、次のコマンドを使用します。

```
aws emr-serverless delete-application \
    --application-id application-id
```

### S3 ログバケットを削除する
<a name="delete-s3-bucket-cli"></a>

S3 ログ記録と出力バケットを削除するには、次のコマンドを使用します。`amzn-s3-demo-bucket` を [EMR Serverless 用のストレージを準備する](getting-started.md#gs-prepare-storage) で作成した S3 バケットの実際の名前に置き換えます。

```
aws s3 rm s3://amzn-s3-demo-bucket --recursive
aws s3api delete-bucket --bucket amzn-s3-demo-bucket
```

### ジョブランタイムロールを削除する
<a name="delete-runtime-role-cli"></a>

ランタイムロールを削除するには、ロールからポリシーをデタッチします。その後、ロールとポリシーの両方を削除できます。

```
aws iam detach-role-policy \
    --role-name EMRServerlessS3RuntimeRole \
    --policy-arn policy-arn
```

ロールを削除するには、次のコマンドを使用します。

```
aws iam delete-role \
    --role-name EMRServerlessS3RuntimeRole
```

ロールにアタッチされているポリシーを削除するには、次のコマンドを使用します。

```
aws iam delete-policy \
    --policy-arn policy-arn
```

Spark ジョブと Hive ジョブの実行に関するその他の例については、「[EMR Serverless ジョブ実行時の Spark 設定の使用](jobs-spark.md)」および「[EMR Serverless ジョブ実行時の Hive 設定の使用](jobs-hive.md)」を参照してください。