

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# S3 Select Pushdown과 함께 Presto를 사용하여 성능 향상
<a name="emr-presto-s3select"></a>

**중요**  
신규 고객은 더 이상 Amazon S3 Select를 사용할 수 없습니다. Amazon S3 Select 기존 고객은 평소처럼 이 기능을 계속 사용할 수 있습니다. [자세히 알아보기](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Amazon EMR 릴리스 버전 5.18.0 이상에서는 Amazon EMR 기반 Presto에서 [S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/) 푸시다운을 사용할 수 있습니다. 이 기능을 사용하면 프로젝션 작업의 계산 작업(예: `SELECT`)과 조건자 작업(예: `WHERE`)을 Amazon S3로 '푸시다운'할 수 있습니다. 이를 통해 쿼리는 Amazon S3에서 필요한 데이터만 검색할 수 있으므로 일부 애플리케이션에서 성능을 향상시키고 Amazon EMR과 Amazon S3 사이에 전송되는 데이터의 양을 줄일 수 있습니다.

## 내 애플리케이션에 S3 Select Pushdown이 적합한가요?
<a name="emr-presto-s3select-apps"></a>

S3 Select Pushdown 사용 여부에 관계없이 애플리케이션을 벤치마킹하여 애플리케이션에 적합한지 여부를 확인하는 것이 좋습니다.

다음 지침을 사용하여 애플리케이션과 함께 S3 Select를 사용할 수 있는지 확인하세요.
+ 쿼리가 원본 데이터 세트 중 반 이상을 필터링합니다.
+ 쿼리 필터 조건자는 Presto 및 S3 Select에서 지원하는 데이터 형식의 열을 사용합니다. 타임스탬프, real 및 double 데이터 형식은 S3 Select Pushdown에서 지원되지 않습니다. 숫자 데이터에는 10진수 데이터 형식을 사용하는 것이 좋습니다. S3 Select에 지원되는 데이터 유형에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*에서 [데이터 유형](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-data-types.html)을 참조하세요.
+ Amazon S3 및 Amazon EMR 클러스터 간 네트워크 연결의 전송 속도와 가용 대역폭이 양호합니다. Amazon S3는 HTTP 응답을 압축하지 않으므로 압축된 입력 파일의 경우 응답 크기가 증가할 수 있습니다.

## 고려 사항 및 제한 사항
<a name="emr-presto-s3select-considerations"></a>
+ CSV 형식으로 저장된 개체만 지원됩니다. 객체는 압축 해제되거나 gzip 또는 bzip2로 선택적으로 압축될 수 있습니다.
+ `AllowQuotedRecordDelimiters` 속성이 지원되지 않습니다. 이 속성이 지정되면 쿼리가 실패합니다.
+ 고객 제공 암호화 키를 사용하는 Amazon S3 서버 측 암호화(SSE-C) 및 클라이언트 측 암호화는 지원되지 않습니다.
+ S3 Select Pushdow은 ORC 또는 Parquet과 같은 열 또는 압축 파일 형식 대신 사용할 수 없습니다.
+ Amazon S3 Select는 Presto 및 Trino에 대한 리전 간 쿼리를 지원하지 않습니다.

## Presto 또는 Trino를 사용하여 S3 Select Pushdown 활성화
<a name="emr-presto-s3select-specify"></a>

Amazon EMR에서 Presto에 대해 S3 Select Pushdown을 활성화하려면 아래 예제와 같이 `hive.s3select-pushdown.enabled` 구성 분류를 사용하여 `presto-connector-hive`를 `true`로 설정합니다. 자세한 내용은 [애플리케이션 구성](emr-configure-apps.md) 단원을 참조하십시오. hive.s3select-pushdown.max-connections 값도 설정해야 합니다. 대부분의 애플리케이션에서는 기본 설정 `500`이 적합합니다. 자세한 내용은 아래 [hive.s3select-pushdown.max-connections 이해 및 튜닝](#emr-presto-s3select-max) 섹션을 참조하세요.

EMR 버전 6.1.0\$16.3.0 기반 PrestoSQL의 경우 아래 예제에서 `presto-connector-hive`를 `prestosql-connector-hive`로 바꿉니다.

Amazon EMR 버전 6.4.0 이상에서는 PrestoSQL 대신 Trino라는 새 이름을 사용합니다. Trino를 사용하는 경우 아래 예제에서 `presto-connector-hive`를 `trino-connector-hive`로 바꿉니다.

```
[
    {
        "classification": "presto-connector-hive",
        "properties": {
            "hive.s3select-pushdown.enabled": "true",
            "hive.s3select-pushdown.max-connections": "500"
        }
    }
]
```

### hive.s3select-pushdown.max-connections 이해 및 튜닝
<a name="emr-presto-s3select-max"></a>

기본적으로 Presto는 파일 시스템으로 EMRFS를 사용합니다. `emrfs-site` 구성 분류의 `fs.s3.maxConnections` 설정은 Presto용 EMRFS를 통해 Amazon S3에 허용되는 최대 클라이언트 연결을 지정합니다. 기본적으로 이 값은 500입니다. S3 Select Pushdown은 조건자 작업에 대해 Amazon S3에 액세스할 때 EMRFS를 우회합니다. 이 경우 `hive.s3select-pushdown.max-connections` 값은 작업자 노드에서 이러한 작업에 허용되는 최대 클라이언트 연결 수를 결정합니다. 하지만 Presto가 시작하고 푸시다운되지 않은 Amazon S3에 대한 모든 요청(예: GET 작업)은 계속해서 `fs.s3.maxConnections`의 값으로 관리됩니다.

애플리케이션에서 "풀에서의 연결 대기 시간이 초과되었습니다"라는 오류가 발생하면 `hive.s3select-pushdown.max-connections` 및 `fs.s3.maxConnections` 값을 모두 늘립니다.