構造化ストリーミングの概念

Apache Spark Structured Streamingは、バッチ処理に使うのと同じSpark APIを使ってストリーミングアプリケーションやパイプラインを構築できます。 Azure Databricksでは、2つの処理モードをサポートしています:

  • リアルタイムモード(RTM): 不正検出やリアルタイムのパーソナライズなど、1秒未満の運用ワークロード向けに設計されています。 RTMはレコードが届き次第処理し、エンドツーエンドの遅延はわずか5ミリ秒です。 リアルタイム モードの概念を参照してください。
  • マイクロバッチモード:分析パイプラインおよび抽出・変換・ロード(ETL)ワークロード向けに設計されています。 マイクロバッチモードでは、ストリームを小さなバッチで処理し、計算コストと数秒または数分単位で測定されるレイテンシの要件をバランスよく調整します。 マイクロバッチ処理がデフォルトのモードです。

両モードは同じ構造化ストリーミングAPIを使用しています。 両方のモードでサポートされるクエリの場合、トリガーとコンピュート設定を通じてモードを切り替えることができます。 「リアルタイム モードを設定する」を参照してください。

構造化ストリーミングは、Apache Spark™ Declarative Pipelines上で構築された Lakeflowパイプラインのストリーミングも支えています。 パイプラインはオーケストレーション、チェックポイント、リカバリーを管理し、変換はSQLやPythonで定義します。

詳細なチュートリアルについては、「 最初の構造化ストリーミング ワークロードを実行する」を参照してください。

データ ストリームからの読み取り

構造化ストリーミングを使用して、サポートされているデータ ソースからデータを増分的に取り込みます。

特徴 説明
自動ローダー 新しいデータ ファイルがクラウド ストレージに到着すると、増分的かつ効率的に処理されます。
Delta Lake テーブル ストリーミングの読み取りと書き込み Delta Lake テーブルは、正確に 1 回の処理が保証されたストリーミング ソースとシンクとして使用します。
SQLおよびSpark API SQLやSpark APIを使ってメッセージバス、キュー、エンタープライズアプリケーションに接続できます。
マイクロバッチ サイズ 一貫性のあるバッチ サイズを維持し、処理の遅延を防ぐために、入力レートを制限します。

データ シンクへの書き込み

Structured Streaming がターゲット システムにデータを配信する方法を構成します。

特徴 説明
チェックポイント 処理状態を保存し、フォールト トレランスと「正確に 1 回」の配信セマンティクスを実現します。
出力モード ステートフル ストリーミング クエリの追加、更新、および完全モードを選択します。
トリガー間隔 トリガー間隔を設定して、処理要件の待機時間とコストのバランスを取ります。
構造化ストリーミングのリアルタイム モード エンド ツー エンドの待機時間が 5 ミリ秒と短いリアルタイム ワークロードのデータを処理します。

ステートフル処理とステートレス処理

ステートレス クエリは、状態を保持せずに行を処理します。 ステートフル クエリは、集計、結合、重複除去の中間状態を維持します。

特徴 説明
ステートレス ストリーミング クエリ 中間状態を維持せずにデータを処理するクエリを最適化します。
透かし ステートフル操作において、構造化ストリーミングが遅れて到着するデータを待機する時間を管理します。
ステートフル ストリーミング ステートフル演算子を使用して、集計、ストリーム ストリーム結合、重複除去を管理します。

監視と管理

クエリのパフォーマンスを追跡し、最適化を適用し、運用環境の Structured Streaming ワークロードのデータ アクセスを管理します。

特徴 説明
StreamingQueryListener を使用した監視 Spark UI とリスナー API を使用して、クエリの進行状況とパフォーマンス のメトリックを追跡します。
チュートリアル: StreamingQueryListener でクエリを監視する リスナーを追加し、Unityカタログのテーブルにクエリの進行状況を記録します。
Unity カタログを使用した管理 ガバナンスとアクセス制御を使用して、ストリーミング ワークロード用に Unity カタログを構成します。