

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

# Presto 厳格モードを有効にする
<a name="presto-strict-mode"></a>

特定の状況では、クエリを長時間実行するとコストが高くなり、Amazon EMR がより多くのクラスターリソースを使用する可能性があります。これにより、クラスター上の他のワークロードからリソースが奪われます。Amazon EMR バージョン 6.8 以降では、次のような長時間実行されるクエリを拒否または警告する厳格モード機能を使用できます。
+ パーティション化された列に述語がないクエリ。これにより大量のデータがテーブルスキャンされます
+ 2 つの大きなテーブルを相互結合するクエリ
+ 多数の行を無制限にソートするクエリ

Presto がクエリプランを完全に最適化すると、厳格モードが実行されます。厳格モードを使用してクエリのニーズに合わせてカスタマイズするには、以下の方法で Presto を設定できます。


**厳格モードのための Presto 設定**  

| 設定 | 説明 | デフォルト | 
| --- | --- | --- | 
| strict-mode-enabled | 厳格モードのオンとオフを切り替えます。true の値は厳格モードがオンであることを示します。 | false | 
| strict-mode-fail-query | 厳格モードでは実行時間が長くなりそうなクエリが検出された場合、クエリを拒否します。false の場合、Amazon EMR は警告を発するだけです。 | false | 
| strict-mode-restrictions | 厳格モードを有効にするときに適用する制限を指定します。厳格モードでは次の制限がサポートされます: MANDATORY\_PARTITION\_PREDICATE、DISALLOW\_CROSS\_JOIN、LIMITED\_SORT。 | MANDATORY\_PARTITION\_PREDICATE、DISALLOW\_CROSS\_JOIN、LIMITED\_SORT | 

厳格モードを試してみるには、これらの設定をオーバーライドするか、Presto クライアントを使用するときにセッションプロパティとして設定します。

**を使用してクラスターの作成時に設定を行うには AWS マネジメントコンソール**

1. **[クラスターの作成]** を選択し、Amazon EMR バージョン 6.8.0、および Presto または Trino を選択します。詳細については、「[PrestoDB と Trino をインストールする](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-considerations.html#emr-prestodb-prestosql)」を参照してください。

1. 厳格モードの設定プロパティを直接指定するか、JSON ファイルを Amazon S3 にアップロードします。必要に応じて、メタストアの AWS Glue データカタログを選択します。VPC、サブネット、ブートストラップアクション、キーペア、セキュリティグループを指定します。クラスターを作成するには、**[クラスターの作成]** を選択します。

1. クラスターのプライマリノードにログインし、`presto-cli` または `trino-cli` を実行します。

1. クエリを送信します。厳格モードは各クエリを検証し、実行時間が長いかどうかを判断します。`strict-mode-fail-query` 設定に応じて、Amazon EMR はクエリを拒否するか、警告を発します。

1. クエリが完了したら、クラスターを終了し、リソースを削除します。

**を使用して実行中のクラスターで設定を設定するには AWS CLI**

1. を使用してクラスターのプライマリノードにログイン AWS CLI し、 `presto-cli`または を実行します`trino-cli`。

1. 以下のコマンドを希望する値で実行します。

   ```
   set session strict_mode_enabled = true; 
   set session strict_mode_fail_query = false;
   set session strict_mode_restrictions = 'DISALLOW_CROSS_JOIN,LIMITED_SORT';
   ```

## 考慮事項
<a name="presto-strict-mode-considerations"></a>

厳格モードを使用する場合は、次の点を考慮してください。
+ 厳格モードでは、リソースをあまり消費しない短時間のクエリを拒否できる場合があります。例えば、小さなテーブルのクエリでは、動的フィルタリングは適用されず、内部結合をクロス結合に置き換えることもありません。これにより、クエリで必須パーティション述語が使用されたり、クロス結合が禁止されたりする可能性があります。この場合、厳格モードではクエリが拒否されます。
+ 厳格モードのチェックは、SELECT、INSERT、CREATE TABLE AS SELECT、および EXPLAIN ANALYZE クエリタイプにのみ適用されます。
+ 必須パーティション述語の制限は Hive コネクタでのみ使用できます。