セッションプロパティマネージャー¶
管理者は、ワークロードのサブセットの動作を制御するためにセッションプロパティを追加できます。これらのプロパティはデフォルトであり、ユーザーが(許可されている場合)上書きできます。セッションプロパティは、リソース使用量を制御したり、機能を有効または無効にしたり、クエリの特性を変更したりするために使用できます。セッションプロパティマネージャーはプラグ可能です。
JSON構成ファイルを読み取る組み込みマネージャーを有効にするには、次の内容を含むetc/session-property-config.properties
ファイルを追加します。
session-property-config.configuration-manager=file
session-property-manager.config-file=etc/session-property-config.json
session-property-manager.config-file
の値を、JSON構成ファイルを指すように変更します。これは、絶対パスでも、Prestoデータディレクトリからの相対パスでもかまいません。
この構成ファイルは、マッチルールのリストで構成されており、各ルールは、クエリが満たす必要のある条件のリストと、デフォルトで適用する必要があるセッションプロパティのリストを指定します。すべての一致ルールが、セッションプロパティのリストの構築に貢献します。ルールは、指定された順序で適用されます。ファイルの後の方で指定されたルールは、以前に検出されたプロパティの値を上書きします。
マッチルール¶
user
(オプション):ユーザー名に一致させるための正規表現。source
(オプション):ソース文字列に一致させるための正規表現。queryType
(オプション):送信されたクエリのタイプと照合する文字列DATA_DEFINITION
:スキーマ/テーブル/ビューのメタデータを変更/作成/削除するクエリ、およびプリペアドステートメント、権限、セッション、トランザクションを管理するクエリ。DELETE
:DELETE
クエリ。DESCRIBE
:DESCRIBE
、DESCRIBE INPUT
、DESCRIBE OUTPUT
、およびSHOW
クエリ。EXPLAIN
:EXPLAIN
クエリ。INSERT
:INSERT
およびCREATE TABLE AS
クエリ。SELECT
:SELECT
クエリ。
clientTags
(オプション):タグのリスト。一致させるには、このリストのすべてのタグが、クエリに関連付けられたクライアント提供のタグのリストに含まれている必要があります。group
(オプション):クエリがルーティングされるリソースグループの完全修飾名に一致させるための正規表現。clientInfo
(オプション):クライアントによって提供されるクライアント情報テキストに一致させるための正規表現overrideSessionProperties
(オプション):セッションプロパティがクライアント指定のセッションプロパティを上書きするかどうかを示すブール値。セッションプロパティがANYルールによって上書きされると、後で優先度の高いルールで値を変更しても、上書きが指定されていない場合でも、上書きされたままになることに注意してください。sessionProperties
:文字列キーと値を持つマップ。各エントリは、システムまたはカタログのプロパティ名と対応する値です。値は、実際のデータ型に関係なく、文字列として指定する必要があります。
例¶
次の要件のセットを検討してください。
global
リソースグループで実行されているすべてのクエリには、8時間の実行時間制限が必要です。すべてのインタラクティブクエリは、
global.interactive
グループの下のサブグループにルーティングされ、1時間の実行時間制限があります(global
の制約よりも厳密です)。すべてのETLクエリ(「etl」というタグが付いている)は、
global.pipeline
グループの下のサブグループにルーティングされ、ライターの動作を制御するために特定のプロパティで構成する必要があります。すべての高メモリETLクエリ(「high_mem_etl」というタグが付いている)は、
global.pipeline
グループの下のサブグループにルーティングされ、Exchangeのマテリアライゼーションを有効にするように構成する必要があります。
これらの要件は、次のルールで表現できます。
[
{
"group": "global.*",
"sessionProperties": {
"query_max_execution_time": "8h",
}
},
{
"group": "global.interactive.*",
"sessionProperties": {
"query_max_execution_time": "1h"
}
},
{
"group": "global.pipeline.*",
"clientTags": ["etl"],
"sessionProperties": {
"scale_writers": "true",
"writer_min_size": "1GB"
}
},
{
"group": "global.pipeline.*",
"clientTags": ["high_mem_etl"],
"sessionProperties": {
"exchange_materialization_strategy": "ALL",
"partitioning_provider_catalog": "hive",
"hash_partition_count": 4096
}
}
]