「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
詳細 †
特徴 †
Spark Streamingと比較した優位性。
よりリアルなストリーミング †
- トリガーで受信したデータは、継続的に流れているデータ・ストリームに追加される。
- データ・ストリームを深さが無限のテーブルとして表すため、
- 不完全な集計結果を長時間維持でき、
- 遅延したデータを再処理することが可能となり、
- その都度結果を更新できる。
- 操作モード(Complete、Update、Append)に依存する。
RDD(DStream) vs. DataFrames?/DataSet? †
- API
- Spark Streamingは内部でRDDを使用しているDStream APIで動作、
- Spark Structured StreamingはDataFrame?やDataset APIを使用している。
- DataFrames?の方が処理が最適化されており、
様々な関数が用意されているため、集約などの処理の選択肢が多い。
イベント・タイムによる遅延データへの対応 †
受信したデータにイベントのタイムスタンプが含まれている場合、
イベントタイムを基準にしてデータを処理する機能がある。
その他 †
- エンド・ツー・エンドの保証がある。
- Spark 2.4以降、入出力が柔軟になった。
処理 †
ステートレス・ステートフル †
- ステートレスな処理
- 属性の選択(プロジェクション)やフィルタなど
- 他のレコードと 独立に処理可能なもの
- マイクロバッチごとに、新規に到着した
レコードで構成された DataFrame?を処理する
- 新規に到着したレコードに加えて、
直前までのマイクロバッチにより更新された
ステートを加味してDataFrame?を処理する。
- 6つのフェーズ
- ① 部分集約処理
- ② 部分マージ処理 (1)
- ③ ステート・リストア
- ④ 部分マージ処理 (2)
- ⑤ ステート・セーブ
- ⑥ 最終処理
イベントタイム・ウィンドウ集約処理 †
- ステートフル集約処理の一種
- 到着時刻に基づくウィンドウ集約ではなく、イベントタイムに基づくウィンドウ集約
- イベントタイムとは、イベントの生起時刻など、レコードに意味付けされた時間。
- イベントタイムに基づき、ウィンドウ・スライディング幅で集約する。
- Spark Streamingでは到着時刻に基づくウィンドウ集約処理のみ実装されていた。
ウォーターマーク †
- ステートフルな処理とともに用いられる
- 遅れてきたデータをハンドリングする仕組み
参考 †
Programming Guide †
Microsoft Docs †
Azure HDInsight資産が多い感。
Qiita †