Apache Spark 構造化ストリーミングは、リアルタイムに近い処理エンジンです。使い慣れた Spark API を用いて、エンドツーエンドのフォールトトレランスを提供し、厳密に 1 回だけの処理を保証します。 構造化ストリーミングでは、静的データに対するバッチ計算を表現するのと同じように、ストリーミング データに対する計算を表現できます。 構造化ストリーミング エンジンは、ストリーミング データの受信と並行して、段階的に計算を実行し、継続的に結果を更新します。
詳細なチュートリアルについては、「 最初の構造化ストリーミング ワークロードを実行する」を参照してください。
データ ストリームからの読み取り
構造化ストリーミングを使用して、サポートされているデータ ソースからデータを増分的に取り込みます。
| 特徴 | 説明 |
|---|---|
| 自動ローダー | 新しいデータ ファイルがクラウド ストレージに到着すると、増分的かつ効率的に処理されます。 |
| 差分テーブルのストリーミング読み取りと書き込み | Delta Lake テーブルは、正確に 1 回の処理が保証されたストリーミング ソースとシンクとして使用します。 |
| 標準コネクタ | 標準コネクタを使用して、メッセージ バス、キュー、エンタープライズ アプリケーションに接続します。 |
| マイクロバッチ サイズ | 一貫性のあるバッチ サイズを維持し、処理の遅延を防ぐために、入力レートを制限します。 |
データ シンクへの書き込み
Structured Streaming がターゲット システムにデータを配信する方法を構成します。
| 特徴 | 説明 |
|---|---|
| チェックポイント | 処理状態を格納して厳密に一度の配信セマンティクスとフォールトトレランスを実現します。 |
| 出力モード | ステートフル ストリーミング クエリの追加、更新、および完全モードを選択します。 |
| トリガー間隔 | トリガー間隔を設定して、処理要件の待機時間とコストのバランスを取ります。 |
| 構造化ストリーミングのリアルタイム モード | エンド ツー エンドの待機時間が 5 ミリ秒と短いリアルタイム ワークロードのデータを処理します。 |
ステートフル処理とステートレス処理
ステートレス クエリは、状態を保持せずに行を処理します。 ステートフル クエリは、集計、結合、重複除去の中間状態を維持します。
| 特徴 | 説明 |
|---|---|
| ステートレス ストリーミング クエリ | 中間状態を維持せずにデータを処理するクエリを最適化します。 |
| 透かし | ステートフル操作において、構造化ストリーミングが遅れて到着するデータを待機する時間を管理します。 |
| ステートフル ストリーミング | ステートフル演算子を使用して、集計、ストリーム ストリーム結合、重複除去を管理します。 |
監視と管理
クエリのパフォーマンスを追跡し、最適化を適用し、運用環境の Structured Streaming ワークロードのデータ アクセスを管理します。
| 特徴 | 説明 |
|---|---|
| StreamingQueryListener を使用した監視 | Spark UI とリスナー API を使用して、クエリの進行状況とパフォーマンス のメトリックを追跡します。 |
| Unity カタログを使用した管理 | ガバナンスとアクセス制御を使用して、ストリーミング ワークロード用に Unity カタログを構成します。 |