Databricksの資格勉強中にやたら出てくるキーワードなので備忘録として残しておきます。
簡単に説明
下記の特徴を持っています。
- バッチ処理と同じ感覚でストリーミング処理ができる
- フォールトトレランス(障害耐性)が強い
- さまざまなデータソースに対応
- 増分データ処理(Micro-Batch & Continuous Processing)
もうちょい深堀
SQLやPythonを使ってリアルタイムデータの処理が可能です。
障害の対処
- “Checkopoint”により、障害発生前の状態を復元
- “Idempotent Sink”を使う事で、データの二重書き込みを防ぐ
- “WAL”でデータ書き込み前の変更内容ログを記録
データソース
データソースは下記のようなものに対応しています。
- クラウドストレージ:AWS S3、GCS
- メッセージンぐシステム:Apache Kafka、Event Hubs
- ファイルシステム:JSON、CSV、Parquet、Delta Lake
データの処理
増分データに関しては下記の2種類の方式を選択できます。
- Micro-Batch Processing(マイクロバッチ処理):少量のデータを一定間隔で処理(デフォルト)
- Continuous Processing(連続処理):低レイテンシーでリアルタイム処理(低遅延)
先行書き込みログ(Write Ahead Log, WAL)
先行書き込みログは、データがシンク(出力先)に書き込まれる前に、処理の状態やオフセットをログとして保持するメカニズムです。
WAL を使用することで、システムがクラッシュした場合でも、処理の再実行やエラーからの回復が可能になります。
出力モード
- 追加モード(デフォルト)
- 更新モード
- コンプリートモード
参考
Databricks公式-構造化ストリーミングの出力モードを選択する
https://docs.databricks.com/aws/ja/structured-streaming/output-mode

コメント