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