【Databricks】構造化ストリーミング(Structured Streaming)

Databricksの資格勉強中にやたら出てくるキーワードなので備忘録として残しておきます。

簡単に説明

下記の特徴を持っています。

  • バッチ処理と同じ感覚でストリーミング処理ができる
  • フォールトトレランス(障害耐性)が強い
  • さまざまなデータソースに対応
  • 増分データ処理(Micro-Batch & Continuous Processing)

もうちょい深堀

SQLやPythonを使ってリアルタイムデータの処理が可能です。

障害の対処

  1. “Checkopoint”により、障害発生前の状態を復元
  2. “Idempotent Sink”を使う事で、データの二重書き込みを防ぐ
  3. “WAL”でデータ書き込み前の変更内容ログを記録

データソース

データソースは下記のようなものに対応しています。

  1. クラウドストレージ:AWS S3、GCS
  2. メッセージンぐシステム:Apache Kafka、Event Hubs
  3. ファイルシステム:JSON、CSV、Parquet、Delta Lake

データの処理

増分データに関しては下記の2種類の方式を選択できます。

  1. Micro-Batch Processing(マイクロバッチ処理):少量のデータを一定間隔で処理(デフォルト)
  2. Continuous Processing(連続処理):低レイテンシーでリアルタイム処理(低遅延)

先行書き込みログ(Write Ahead Log, WAL)

先行書き込みログは、データがシンク(出力先)に書き込まれる前に、処理の状態やオフセットをログとして保持するメカニズムです。

WAL を使用することで、システムがクラッシュした場合でも、処理の再実行やエラーからの回復が可能になります。

出力モード

  • 追加モード(デフォルト)
  • 更新モード
  • コンプリートモード

参考

Databricks公式-構造化ストリーミングの出力モードを選択する

https://docs.databricks.com/aws/ja/structured-streaming/output-mode

コメント

タイトルとURLをコピーしました