ステートレスストリーミングクエリを最適化する
このページでは、Databricks Runtime 18.0 以降のステートレス ストリーミング クエリで使用できる最適化機能について説明します。
ステートレスな構造化ストリーミングクエリは、中間状態を維持せずにデータを処理します。これらのクエリは、ストリーミング集計、dropDuplicates、またはストリーム-ストリーム結合などのステートフル演算子を使用しません。例としては、ストリーム-静的結合を使用するクエリ、Delta Lake テーブルでのMERGE INTO、およびソースからシンクに処理された行のみを追跡するその他の操作が挙げられます。
適応型クエリ実行と自動最適化シャッフル
Databricks は、ステートレスなストリーミングクエリ向けに適応型クエリ実行(AQE)と自動最適化シャッフル(AOS)に対応しています。これらの機能は、ストリーム静的結合、Delta Lake テーブルを使用した MERGE INTO、および同様の操作を使用するストリーミングワークロードの最適化に役立ちます。
ステートレス ストリーミング クエリに対して AQE を有効にするには、次の構成をtrueに設定します。これはデフォルトで有効になっています:
spark.sql.adaptive.streaming.stateless.enabled true
ステートレス ストリーミング クエリに対して AOS を有効にするには、AQE を有効にして次の構成を設定します。
spark.sql.shuffle.partitions auto
クエリの再開中にシャッフルパーティションを変更する
ステートレス ストリーミング クエリでは、クエリを再開するときにシャッフル パーティションの数を変更することがサポートされています。これにより、さまざまな入力ボリュームに合わせて並列処理を調整できます。
この機能は、履歴バックフィルのシナリオに特に役立ちます。たとえば、履歴バックフィルを高い並列性で処理し、その後、リアルタイム入力の並列性を下げることができます。
シャッフル パーティションの数を変更するには、次の構成を希望の値に設定し、クエリを再起動します。
spark.sql.shuffle.partitions <number>