

# Spark プロパティを使用してカスタム設定を指定する
<a name="notebooks-spark-custom-jar-cfg"></a>

Amazon Athena for Apache Spark でセッションを作成または編集する場合、[[Spark プロパティ]](https://spark.apache.org/docs/latest/configuration.html#spark-properties) を使用してセッションの `.jar` ファイル、パッケージ、またはその他のカスタム設定を指定できます。Spark のプロパティを指定するには、Athena コンソール、AWS CLI、または Athena API を使用できます。

## Athena コンソールを使用して Spark プロパティを指定する
<a name="notebooks-spark-custom-jar-cfg-console"></a>

Athena コンソールでは、[ノートブックの作成](notebooks-spark-getting-started.md#notebooks-spark-getting-started-creating-your-own-notebook)時や[現在のセッションの編集](notebooks-spark-getting-started.md#notebooks-spark-getting-started-editing-session-details)時に Spark プロパティを指定できます。

****[ノートブックの作成]** または **[セッションの詳細の編集]** ダイアログボックスにプロパティを追加する方法**

1. **[Spark のプロパティ]** を拡張します。

1. プロパティを追加するには、**[テーブルで編集]** または **[JSON で編集]** オプションを使用します。
   + **[テーブルで編集]** オプションを使用する場合は、**[プロパティを追加]** を選択してプロパティを追加するか、**[削除]** を選択してプロパティを削除します。**[キー]** ボックスと **[値]** ボックスを使用して、プロパティ名とその値を入力します。
     + カスタム `.jar` ファイルを追加するには、`spark.jars` プロパティを使用します。
     + パッケージファイルを指定するには、`spark.jars.packages` プロパティを使用します。
   + 設定を直接入力して編集するには、**[JSON で編集]** オプションを選択します。JSON テキストエディタでは、次のタスクを実行できます。
     + JSON テキストをクリップボードにコピーするには、**[コピー]** を選択します。
     + JSON エディタからすべてのテキストを削除するには、**[クリア]** を選択します。
     + 設定 (歯車) アイコンを選択して行折り返しの動作を設定するか、JSON エディタのカラーテーマを選択します。

### 注意事項
<a name="notebooks-spark-custom-jar-cfg-notes"></a>
+ Athena for Spark でプロパティを設定できます。これは [[SparkConf]](https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.SparkConf.html) オブジェクトで [[Spark properties]](https://spark.apache.org/docs/latest/configuration.html#spark-properties) を直接設定する場合と同じです。
+ `spark.` プレフィックスが付いたすべての Spark プロパティを開始します。他のプレフィックスが付いたプロパティは無視されます。
+ Athena のカスタム設定では、すべての Spark プロパティを利用できるわけではありません。設定が制限されている `StartSession` リクエストを送信すると、セッションは開始時に失敗します。
  + `spark.athena.` プレフィックスは予約されているため使用できません。

## AWS CLI または Athena API を使用してカスタム設定を指定する
<a name="notebooks-spark-custom-jar-cfg-cli-or-api"></a>

AWS CLI または Athena API を使用してセッション設定を指定するには、[StartSession](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartSession.html) API アクションまたは [start-session](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/start-session.html) CLI コマンドを使用します。`StartSession` リクエストでは、[EngineConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_EngineConfiguration.html) オブジェクトの `SparkProperties` フィールドを使用して設定情報を JSON 形式で渡します。これにより、指定した設定でセッションが開始されます。

AWS CLI からカスタム Spark プロパティを指定するには、インタラクティブセッションの開始時に `engine-configuration` 設定を使用します。

```
aws athena start-session \ 
--region "REGION"
--work-group "WORKGROUP" \
--engine-configuration '{
    "Classifications": [{
      "Name": "spark-defaults",
      "Properties": {
        "spark.dynamicAllocation.minExecutors": "1",
        "spark.dynamicAllocation.initialExecutors": "2",
        "spark.dynamicAllocation.maxExecutors": "10",
        "spark.dynamicAllocation.executorIdleTimeout": "300"
      }
    }]
  }'
```

`CreateWorkgroup` API アクションまたは `UpdateWorkgroup` API アクションを使用して、ワークグループレベルでデフォルト設定を指定することもできます。ワークグループで定義したデフォルト設定は、そのワークグループで開始されたすべてのセッションに適用されます。

ワークグループの AWS CLI からデフォルトの Spark プロパティを指定するには、新しいワークグループの作成時に `engine-configuration` 設定を使用します。

```
aws athena create-work-group \
  --region "REGION" \
  --name "WORKGROUP_NAME" \
  --configuration '{
    "EngineVersion": {
      "SelectedEngineVersion": "Apache Spark version 3.5"
    },
    "ExecutionRole": "EXECUTION_ROLE",
    "EngineConfiguration": {
      "Classifications": [
        {
          "Name": "spark-defaults",
          "Properties": {
            "spark.dynamicAllocation.minExecutors": "1",
            "spark.dynamicAllocation.initialExecutors": "2",
            "spark.dynamicAllocation.maxExecutors": "10",
            "spark.dynamicAllocation.executorIdleTimeout": "300"
          }
        }
      ]
    }
  }'
```

ワークグループの AWS CLI からデフォルトの Spark プロパティに変更を加えるには、ワークグループの更新時に `engine-configuration` 設定を使用します。この変更は、その後の新しいインタラクティブセッションに適用されます。

```
aws athena update-work-group \
  --region "REGION" \
  --work-group "WORKGROUP_NAME" \
  --configuration-updates '{
    "EngineVersion": {
      "SelectedEngineVersion": "Apache Spark version 3.5"
    },
    "ExecutionRole": "EXECUTION_ROLE",
    "EngineConfiguration": {
      "Classifications": [
        {
          "Name": "spark-defaults",
          "Properties": {
            "spark.dynamicAllocation.minExecutors": "1",
            "spark.dynamicAllocation.initialExecutors": "2",
            "spark.dynamicAllocation.maxExecutors": "12",
            "spark.dynamicAllocation.executorIdleTimeout": "300"
          }
        }
      ]
    }
  }'
```