

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

# 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/) プッシュダウンを使用できます。この機能により、Presto から Amazon S3 に (`SELECT` などの) 射影演算と (`WHERE` などの) 述語演算の計算処理を「プッシュダウン」できます。これにより、一部のアプリケーションではクエリで Amazon S3から必要なデータだけを取得してパフォーマンスを向上させ、Amazon EMR と Amazon S3 間で転送されるデータの量を減らすことができます。

## S3 Select Pushdown が使用するアプリケーションに適しているかどうかを確認する
<a name="emr-presto-s3select-apps"></a>

S3 Select Pushdown が使用するアプリケーションに適しているかどうかを確認するために、S3 Select Pushdown を使用した場合と使用しない場合のアプリケーションのベンチマークを行うことをお勧めします。

アプリケーションが S3 Select を使用する候補となるかどうかを判断するには、次のガイドラインを使用します。
+ クエリは元のデータセットの半分以上を除外する。
+ クエリのフィルター述語では、Presto と S3 Select がサポートするデータ型を持つ列が使用されます。S3 Select Pushdown では、タイムスタンプデータ型、実データ型、および倍精度浮動小数点データ型はサポートされません。数値データには小数データ型を使用することをお勧めします。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 Pushdown は、ORC や Parquet などの列または圧縮ファイル形式には適していません。
+ Amazon S3 Select は、Presto および Trino のクロスリージョンクエリをサポートしていません。

## PrestoDB または Trino で S3 Select Pushdown を有効にする
<a name="emr-presto-s3select-specify"></a>

Amazon EMR で PrestoDB の S3 Select Pushdown を有効にするには、以下の例に示されているように、`presto-connector-hive` 設定分類を使用して `hive.s3select-pushdown.enabled` を `true` に設定します。詳細については、「[アプリケーションの設定](emr-configure-apps.md)」を参照してください。hive.s3select-pushdown.max-connections 値も設定する必要があります。ほとんどのアプリケーションでは、デフォルト設定の `500` で十分です。詳細については、以下の [hive.s3select-pushdown.max-connections の理解と調整](#emr-presto-s3select-max) を参照してください。

EMR バージョン 6.1.0 - 6.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 です。述語演算のために Amazon S3 にアクセスすると、S3 Select Pushdown は EMRFS をバイパスします。この場合、`hive.s3select-pushdown.max-connections` の値によってワーカーノードからのオペレーションに使用可能なクライアント接続の最大数が決まります。ただし、(GET オペレーションなどの) プッシュダウンされていない Presto から Amazon S3 へのリクエストは、引き続き `fs.s3.maxConnections` の値に従います。

アプリケーションでエラー「Timeout waiting for connection from pool」が発生する場合は、`hive.s3select-pushdown.max-connections` と `fs.s3.maxConnections` 両方の値を増やします。