投稿日: Oct 27, 2022
EMR 6.8 の PrestoDB と Trino を使うと、ストリクトモードと呼ばれる構成設定により、実行時間の長いクエリによるコスト超過を防げます。記述が不十分な SQL クエリに時間がかかり、他のビジネスに不可欠なワークロードのリソースがとられてしまうことがあるという声が寄せられています。管理者がこうしたクエリに対処できるように、特定の種類のクエリに対して警告や拒否を行うことができるストリクトモード設定を導入しました。例えば、パーティション化された列に対する述語がなく、大規模なテーブルスキャンが発生するクエリ、大規模なテーブル間の交差結合を伴うクエリ、多数の列を無制限にソートするクエリです。クラスター作成時にストリクトモード構成を設定することも、セッションプロパティを使用して設定を上書きすることもできます。select、insert、create table as select、explain analyze のクエリタイプでストリクトモードのチェックを適用できます。
また、Amazon EMR PrestoDB と Trino にスポットの中断を処理する新機能が追加され、クエリをコスト効率よく確実に実行できるようになりました。Amazon EMR のスポットインスタンスにより、オンデマンドインスタンスと比較してコストを抑えて、Amazon EC2 の空き容量でビッグデータワークロードを実行できます。ただし、Amazon EC2 は 2 分前の通知でスポットインスタンスを中断できます。PrestoDB と Trino のクエリはスポットノードが終了すると失敗します。そのため、こうしたワークロードをスポットインスタンスで実行して低コストのメリットを受けることができませんでした。EMR 6.7 では PrestoDB と Trino のエンジンに新機能を追加し、スポットの中断を検出して既存のクエリがそれらのノードで 2 分以内に完了できるか判断できるようにしました。クエリが完了できない場合、すぐに失敗にして別のノードでクエリを再試行します。また、Amazon EMR PrestoDB と Trino のエンジンは、回収されてようとしているスポットノードに新しいクエリをスケジュールしません。これら 2 つの機能により、Amazon EMR の PrestoDB と Trino のエンジンでの回復性向上と、スポットノードでの経済的なクエリの実行という利点を両立できます。