

# 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 속성](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"
          }
        }
      ]
    }
  }'
```