構造化ストリーミングの概念
Apache Spark 構造化ストリーミングは、使い慣れた Spark APIを使用して exactly-once 処理保証を備えたエンドツーエンドのフォールト トレランスを提供する、リアルタイムに近い処理エンジンです。 構造化ストリーミングを使用すると、静的データに対するバッチ計算を表現するのと同じように、ストリーミング データに対する計算を表現できます。 構造化ストリーミング エンジンは、計算を段階的に実行し、ストリーミング データが到着すると結果を継続的に更新します。
手順を追ったチュートリアルについては、 「最初の構造化ストリーミングワークロードを実行する」を参照してください。
データストリームからの読み取り
構造化ストリーミングを使用して、サポートされているデータソースからデータを段階的に取り込みます。
-
- Auto Loader
- クラウドストレージに新しいデータファイルが到着するたびに、段階的かつ効率的に処理します。
-
- Deltaテーブルのストリーミングの読み取りと書き込み
- Delta Lakeテーブルを、厳密に1回だけ処理されることを保証するストリーミングソースおよびシンクとして使用します。
-
- 標準コネクタ
- 標準コネクタを使用して、メッセージバス、キュー、およびエンタープライズアプリケーションに接続します。
-
- マイクロバッチサイズ
- バッチサイズを一定に保ち、処理の遅延を防ぐために、入力速度を制限する。
データ シンクへの書き込み
構造化ストリーミングがターゲットシステムにデータを配信する方法を設定します。
-
- チェックポイント
- 処理状態を保存することで、耐障害性と厳密に1回限りの配信セマンティクスを実現します。
-
- 出力モード
- ステートフルなストリーミングクエリでは、追加、更新、完了の各モードから選択できます。
-
- トリガー間隔
- 処理要件に合わせて、遅延時間とコストのバランスを取るようにトリガー間隔を設定してください。
-
- 構造化ストリーミングのリアルタイムモード
- エンドツーエンドのレイテンシを最短5ミリ秒に抑え、リアルタイムワークロードのデータを処理します。
ステートフル処理とステートレス処理
ステートレスクエリは、状態を保持せずに行を処理します。ステートフルクエリは、集計、結合、重複排除のための中間状態を保持します。
-
- ステートレスストリーミングクエリ
- 中間状態を保持せずにデータを処理するクエリを最適化する。
-
- ウォーターマーク
- ステートフルな操作において、構造化ストリーミングが遅延したデータを待機する時間を制御します。
-
- ステートフルストリーミング
- ステートフル オペレーターを使用して、集約、ストリーム ストリーム結合、重複排除を管理します。
監視および管理
クエリのパフォーマンスを追跡し、最適化を適用し、本番運用構造化ストリーミング ワークロードのデータ アクセスを管理します。
-
- StreamingQueryListener で監視する
- Spark UIとリスナーAPIを使用して、クエリの進行状況とパフォーマンスのメトリクスを追跡します。
-
- Unity Catalogで管理する
- ガバナンスとアクセス制御を備えたストリーミング ワークロード用にUnity Catalog構成します。