クエリ用のスキャン統計を有効にする
Note
Azure HDInsight on AKS は 2025 年 1 月 31 日に廃止されます。 2025 年 1 月 31 日より前に、ワークロードを Microsoft Fabric または同等の Azure 製品に移行することで、ワークロードの突然の終了を回避する必要があります。 サブスクリプション上に残っているクラスターは停止され、ホストから削除されることになります。
提供終了日までは基本サポートのみが利用できます。
重要
現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加の使用条件」に記載されています。 この特定のプレビューについては、「Microsoft HDInsight on AKS のプレビュー情報」を参照してください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新情報については、Azure HDInsight コミュニティをフォローしてください。
多くの場合、データ チームは、リソース使用率を向上させるため、またはビジネス要件を満たすために、パフォーマンスを調査したり、クエリを最適化したりする必要があります。
HDInsight on AKS 用 Trino に新しい機能が追加されました。これにより、ユーザーは任意のコネクタのスキャン統計をキャプチャできます。 この機能によって、Trino が生成する統計で得られる情報以上の、クエリ パフォーマンス プロファイルに関するより深い分析情報を得ることができます。
この機能は、セッション プロパティ collect_raw_scan_statistics
と次の Trino コマンドを使って有効にできます。
SET SESSION collect_raw_scan_statistics=true
有効にすると、TableScanOperator
、ScanFilterAndProject
などのクエリのソース演算子でデータ スキャンに関する統計情報が得られます。粒度はパイプライン内の演算子インスタンスごとです。
ヒント
スキャン統計は、クラスターまたはクエリに CPU の制約がなく、クエリの読み取りパフォーマンスを調査する必要がある場合に、ボトルネックを特定するのに役立ちます。 また、分割レベルの観点からクエリの実行プロファイルを理解するのにも役立ちます。
Note
現在、ワーカーごとにキャプチャされる分割数は、生成されるデータのサイズの制約により 1,000 に制限されています。 クエリのワーカーごとの分割数がこの制限を超えた場合は、実行時間が最も長い上位 1,000 個の分割が返されます。
スキャン統計にアクセスする方法
セッション プロパティが設定されると、セッション内の後続のクエリでは、ソース演算子が使用可能な場合は常に、ソース演算子からの統計のキャプチャが開始されます。 ユーザーがクエリに対して生成されたスキャン統計を使用して分析する方法は複数あります。
クエリの Json
[クエリの詳細] ページの [Json] タブには、クエリの JSON 表現が表示されます。これには、すべてのステージの統計情報とクエリのパイプラインが含まれます。 セッション プロパティが設定されると、Json には queryStats.operatorSummaries[*]
に scanStats
という新しいフィールドが含まれます。 この配列には、演算子のインスタンスごとに 1 つのオブジェクトが含まれます。
次の例は、hive connector
を使用し、スキャン統計を有効にしたクエリの Json を示しています。
Note
スキャン統計の概要には、コネクタによって設定される splitInfo が含まれます。 これにより、ユーザーはカスタム コネクタに含めるストアに関する情報を制御できます。
スキャン統計 UI
[クエリの詳細] ページには [Scan Stats
] という新しいタブがあります。このタブでは、この機能によって生成された統計情報が視覚化され、各ワーカーの分割粒度のパフォーマンスを洞察できます。 このページでは、ユーザーは、経時的な同時読み取りやスループットなどの情報と共に、クエリに関する Trino の実行プロファイルを確認できます。
次の例は、スキャン統計が有効になっているクエリのページを示しています。
Microsoft Query ロガーの使用**
Microsoft Query ロガーには、この機能のサポートが組み込まれています。 この機能を有効にすると、クエリ ロガー プラグインはクエリ イベント テーブルと共に operatorstats
というテーブルを設定します。このテーブルは非正規化され、すべての演算子インスタンスがクエリごとに 1 行になります。