S3 Select Pushdown と Presto を使用してパフォーマンスを向上させる - Amazon EMR

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

S3 Select Pushdown と Presto を使用してパフォーマンスを向上させる

Amazon EMRリリースバージョン 5.18.0 以降では、Amazon の Presto で S3 Select Pushdown を使用できますEMR。この機能により、Presto から Amazon S3 に (SELECT などの) 射影演算と (WHERE などの) 述語演算の計算処理を「プッシュダウン」できます。これにより、クエリは Amazon S3 から必要なデータのみを取得できるため、パフォーマンスが向上し、一部のアプリケーションで Amazon と EMR Amazon S3 の間で転送されるデータの量を減らすことができます。

S3 Select Pushdown が使用するアプリケーションに適しているかどうかを確認する

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

アプリケーションが S3 Select を使用する候補となるかどうかを判断するには、次のガイドラインを使用します。

  • クエリは元のデータセットの半分以上を除外する。

  • クエリのフィルター述語では、Presto と S3 Select がサポートするデータ型を持つ列が使用されます。S3 Select Pushdown では、タイムスタンプデータ型、実データ型、および倍精度浮動小数点データ型はサポートされません。数値データには小数データ型を使用することをお勧めします。S3 Select でサポートされているデータ型の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「データ型」を参照してください。

  • Amazon S3 と Amazon EMRクラスター間のネットワーク接続は、転送速度と使用可能な帯域幅が良好です。Amazon S3 はHTTPレスポンスを圧縮しないため、圧縮された入力ファイルではレスポンスサイズが増加する可能性があります。

考慮事項と制約事項

  • CSV 形式で保存されたオブジェクトのみがサポートされます。オブジェクトは解凍するか、必要に応じて gzip または bzip2 で圧縮できます。

  • AllowQuotedRecordDelimiters プロパティはサポートされていません。このプロパティを指定した場合、クエリは失敗します。

  • お客様が用意した暗号化キー (-C) SSEによる Amazon S3 サーバー側の暗号化とクライアント側の暗号化はサポートされていません。

  • S3 Select Pushdown は、 ORCや Parquet などの列指向または圧縮されたファイル形式を使用する代わりにはなりません。

PrestoDB または Trino で S3 Select Pushdown を有効にする

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

EMR バージョン 6.1.0 ~ 6.3.0 の PrestoSQL の場合、以下の例presto-connector-hiveの を に置き換えますprestosql-connector-hive

Amazon EMRバージョン 6.4.0 以降では、Presto の代わりに新しい名前 Trino が使用されますSQL。Trino を使用する場合、以下の例の presto-connector-hivetrino-connector-hive に置き換えます

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

hive.s3select-pushdown.max-connections の理解と調整

デフォルトでは、Presto はファイルシステムEMRFSとして を使用します。emrfs-site 設定分類fs.s3.maxConnectionsの 設定は、Presto EMRFSの を介して Amazon S3 への許容されるクライアント接続の最大数を指定します。デフォルトでは 500 です。S3 Select Pushdown は、述語オペレーションのために Amazon S3 にアクセスするEMRFSときにバイパスします。この場合、hive.s3select-pushdown.max-connections の値によってワーカーノードからのオペレーションに使用可能なクライアント接続の最大数が決まります。ただし、GETPresto が開始する Amazon S3 へのリクエストのうち、プッシュダウンされないリクエスト、例えばオペレーションは、引き続き の値によって管理されますfs.s3.maxConnections

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