メインコンテンツまでスキップ

ステートレスストリーミングクエリを最適化する

このページでは、Databricks Runtime 18.0 以降のステートレス ストリーミング クエリで使用できる最適化機能について説明します。

ステートレス構造化ストリーミング クエリは、中間状態を維持せずにデータを処理します。これらのクエリでは、ストリーミング集計、 dropDuplicates 、ストリーム-ストリーム結合などのステートフル演算子は使用されません。 例には、ストリーム静的結合を使用するクエリ、 Deltaテーブルを使用したMERGE INTO 、およびソースからシンクまで処理された行のみを追跡するその他の操作が含まれます。

適応型クエリ実行と自動最適化シャッフル

Databricks は、ステートレス ストリーミング クエリに対して Adaptive Query Execution (AQE) と Auto Optimized Shuffle (AOS) をサポートしています。これらの機能は、ストリーム静的結合、Delta テーブルを使用したMERGE INTO 、および同様の操作を使用するストリーミング ワークロードの最適化に役立ちます。

ステートレス ストリーミング クエリに対して AQE を有効にするには、次の構成をtrueに設定します。これはデフォルトで有効になっています:

ini
spark.sql.adaptive.streaming.stateless.enabled true

ステートレス ストリーミング クエリに対して AOS を有効にするには、AQE を有効にして次の構成を設定します。

ini
spark.sql.shuffle.partitions auto

クエリの再開中にシャッフルパーティションを変更する

ステートレス ストリーミング クエリでは、クエリを再開するときにシャッフル パーティションの数を変更することがサポートされています。これにより、さまざまな入力ボリュームに合わせて並列処理を調整できます。

この機能は、履歴バックフィルのシナリオに特に役立ちます。たとえば、履歴バックフィルを高い並列性で処理し、その後、リアルタイム入力の並列性を下げることができます。

シャッフル パーティションの数を変更するには、次の構成を希望の値に設定し、クエリを再起動します。

ini
spark.sql.shuffle.partitions <number>