databricks-spark-structured-streaming について
databricks-spark-structured-streamingは、本番向けのSpark Structured Streamingパイプラインの構築・運用を支援するガイドです。Kafka、ストリーム結合、複数シンクへの書き込み、状態管理、リアルタイムモードのパターンをまとめています。
主な機能
- 01Kafkaストリーミングのパターン
- 02リアルタイムモードの設定と監視
- 03ストリーム間・ストリームと静的データの結合
- 04複数シンクへの書き込みとMERGEの最適化
- 05チェックポイントと状態操作の設定
- 06本番運用チェックリスト
活用シーン
- 01KafkaデータをDeltaにストリーミング
- 02低レイテンシでイベントを処理
- 03ストリームデータと静的データを結合
- 04ストリーミングレコードを複数テーブルに書き込み
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ databricks/ databricks-agent-skills --skill databricks-spark-structured-streamingインストール後、Claude Code で/databricks-spark-structured-streamingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlassets/databricks.svgreferences/checkpoint-best-practices.mdkafka-streaming.mdlakebase-sink-python.mdmerge-operations.mdmulti-sink-writes.mdreal-time-mode.mdstateful-operations.mdstream-static-joins.mdstream-stream-joins.mdstreaming-best-practices.mdtrigger-and-cost-optimization.md詳細
Spark Structured Streaming
Spark Structured Streaming による本番環境対応のストリーミングパイプライン。このスキルでは、詳細なパターンとベストプラクティスへの案内を提供します。
クイックスタート
from pyspark.sql.functions import col, from_json
# Basic Kafka to Delta streaming
df = (spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "broker:9092")
.option("subscribe", "topic")
.load()
.select(from_json(col("value").cast("string"), schema).alias("data"))
.select("data.*")
)
df.writeStream \
.format("delta") \
.outputMode("append") \
.option("checkpointLocation", "/Volumes/catalog/checkpoints/stream") \
.trigger(processingTime="30 seconds") \
.start("/delta/target_table")
基本パターン
| パターン | 説明 | 参照 |
|---|---|---|
| Kafka ストリーミング | Kafka から Delta、Kafka から Kafka、リアルタイムモード | references/kafka-streaming.md を参照 |
| リアルタイムモード(RTM) | 1 秒未満の E2E レイテンシ — クラスターのセットアップ、スロット計算、サポート対象の操作(DBR 18 以降のストリーム間内部結合を含む)、transformWithState、可観測性、エラークラス、配信セマンティクス | references/real-time-mode.md を参照 |
| Lakebase シンク | トランザクション対応のアップサートで、ストリーミングレコードを Lakebase Postgres に書き込みます。ネイティブの format("postgresql") シンク(DBR 18.3 以降)と、フォールバックとしての手動 foreach シンク | references/lakebase-sink-python.md を参照 |
| ストリーム結合 | ストリーム間結合、ストリームと静的データの結合 | references/stream-stream-joins.md、references/stream-static-joins.md を参照 |
| 複数シンクへの書き込み | 複数のテーブルへの書き込み、並列マージ | references/multi-sink-writes.md を参照 |
| マージ操作 | MERGE のパフォーマンス、並列マージ、最適化 | references/merge-operations.md を参照 |
設定
| トピック | 説明 | 参照 |
|---|---|---|
| チェックポイント | チェックポイントの管理とベストプラクティス | references/checkpoint-best-practices.md を参照 |
| ステートフル操作 | ウォーターマーク、ステートストア、RocksDB の設定 | references/stateful-operations.md を参照 |
| トリガーとコスト | トリガーの選択、コストの最適化、RTM | references/trigger-and-cost-optimization.md を参照 |
ベストプラクティス
| トピック | 説明 | 参照 |
|---|---|---|
| 本番環境チェックリスト | 包括的なベストプラクティス | references/streaming-best-practices.md を参照 |
本番環境チェックリスト
- チェックポイントの場所は永続的です(DBFS ではなく UC ボリューム)
- ストリームごとに一意のチェックポイントを使用
- 固定サイズのクラスターを使用(ストリーミングではオートスケーリングを使用しない)
- モニタリングを設定済み(入力レート、遅延、バッチ継続時間)
- Exactly-once を検証済み(txnVersion/txnAppId)
- ステートフル操作用のウォーターマークを設定済み
- ストリームと静的データの結合には左外部結合を使用(内部結合ではない)
コメント
Markdown 対応