セッションプロパティマネージャー

管理者は、ワークロードのサブセットの動作を制御するためにセッションプロパティを追加できます。これらのプロパティはデフォルトであり、ユーザーが(許可されている場合)上書きできます。セッションプロパティは、リソース使用量を制御したり、機能を有効または無効にしたり、クエリの特性を変更したりするために使用できます。セッションプロパティマネージャーはプラグ可能​​です。

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:スキーマ/テーブル/ビューのメタデータを変更/作成/削除するクエリ、およびプリペアドステートメント、権限、セッション、トランザクションを管理するクエリ。

    • DELETEDELETEクエリ。

    • DESCRIBEDESCRIBEDESCRIBE INPUTDESCRIBE OUTPUT、およびSHOWクエリ。

    • EXPLAINEXPLAINクエリ。

    • INSERTINSERTおよびCREATE TABLE ASクエリ。

    • SELECTSELECTクエリ。

  • 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
    }
  }
]