Warning

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

ブレーキングチェンジ

ブレーキングチェンジは、ストリーミングやインクリメンタルパイプラインで状態を持つ関数が変更されたときに発生します。トランスフォームは、行レベルまたは状態を持つ関数のどちらかです。

  • 行レベルトランスフォーム: 結果を生成するために1行のデータだけが必要です。例えば、Multiply numbersフィルター処理する などです。
  • 状態を持つ関数: 複数の行にわたるデータが必要なトランスフォームです。

主な状態を持つ関数は4つあります。

  • 集計 (ストリーミングのウィンドウ内での集計)
  • アウターキャッシング結合 (ストリーミングのみ)
  • ハートビート検出 (ストリーミングのみ)
  • 時間制限付き重複ドロップ (ストリーミングのみ)
  • 時間制限付きイベントタイムソート (ストリーミングのみ)

状態を持つ関数が変更されると、以前の出力はもう正確でないかもしれません。例えば、偶数にフィルター処理してその集合の合計を取るとします。もしフィルター処理をすべての奇数に変更すると、既存の状態は偶数の合計になりますが、新しいフィルター処理された値はすべて奇数になります。したがって、合計が何を表しているかは今や曖昧であり、偶数の集合の合計に奇数の集合の合計が加算されている状態です。状態を更新するには、リプレイを実行します。

リプレイには2種類あります。

  • 入力データの開始からのリプレイ: データの開始地点からパイプラインをリプレイします。これは、入力がストリームかインクリメンタルデータセットかによって、ストリームの開始か入力データセットの最初のトランザクションのいずれかです。

入力データの開始からリプレイするリプレイ戦略があるデプロイパネル。

  • 指定された時間前からのリプレイ (ストリーミングのみ利用可能): 指定された時間前からの上流データを使用してパイプラインをリプレイします。粒度のあるリプレイには、指定された時間より前にコミットされた最初のトランザクションからのすべてのデータが含まれ、それ以前のデータは処理されません。これは、指定した時間より前の1トランザクション分のデータが得られることを意味します。

指定された時間前からリプレイするリプレイ戦略があるデプロイパネル。

リプレイはオプションまたは必須ですが、ブレーキングチェンジの場合、Pipeline Builder は自動的にこの変更を検出し、デプロイ時にリプレイが必要になります。以下の画像は、インクリメンタルパイプラインで強制されたリプレイを示しています。

ブレーキングチェンジによる強制的なリプレイがあるデプロイパネル。

パイプラインのリプレイは、長時間のダウンタイムにつながることがあり、複数の日にわたることもあります。パイプラインをリプレイすると、ストリームの履歴が失われ、すべての下流パイプラインのコンシューマがリプレイを要求されます。