Dataflow SDKのドキュメントを読んで、データがストリーミングジョブの透かしを超えて到着したときに何が起こるかを調べています。Google Dataflow late data
このページ:
https://cloud.google.com/dataflow/model/windowing
を使用すると、デフォルトのウィンドウ/トリガー戦略を使用している場合、その後、後半のデータが破棄されることを示します。
注:データフローのデフォルトのウィンドウとトリガー戦略は捨てます遅いデータ。パイプラインが遅延データのインスタンスを処理するようにするには、PCollectionのウィンドウング戦略を設定し、それに応じてPCollectionのトリガーを設定するときに、明示的に.withAllowedLatenessを設定する必要があります。
はまだありませんこのページ:
https://cloud.google.com/dataflow/model/triggers
それが遅れて到着したときに後半のデータは、単一の要素PCollectionとして放出されることを示します。
PCollectionのデフォルトのトリガはイベントですシステムのウォーターマーク(すべてのデータを「必要」とするDataflowの概念)がウィンドウの最後を通過するときにウィンドウの結果を出力します。デフォルトのトリガーは反復ベースで発行されます。つまり、遅延データは定義どおりにウォーターマークの後に到着し、トリガーをトリップし、遅い要素が到着したときに放出されます。
ウォーターマークを過ぎたデータは完全に破棄されますか?または、時間内に到着したときにウィンドウが表示され、代わりに単独で放射される他のデータでは放出されませんか?
すぐにお返事ありがとう@ben。したがって、デフォルトのウィンドウング戦略でこれを正しく理解している場合: *時間通りに到着するデータは、1つの出力ペインで出力されます。 *遅れているがallowedLateness内に到着したデータポイントは、それ自身の出力ペイン(約)で出力されます。 * allowedLatenessより遅れて到着するデータポイントは破棄されます。 allowedLatenessより後で提供されるデータをキャプチャする方法はありますか?データフローの使用例の1つは、遅くとも到着したかどうかにかかわらず、すべてのクエリを最終的に数える必要がある課金システムです。 – LeeW
allowedLatenessの後に到着するすべてのデータは破棄されます。すべての遅延データに応答する場合は、それに応じてallowedLatenessを設定する必要があります。典型的な使用例では、遅いデータが受け入れられなくなる時点(日/週/月)があります。システムは、allowedLatenessがこれまでになくなるまで、すべてのウィンドウのデータを保持する必要があり、それ以上のデータはそのウィンドウに対して考慮されません。遅れたデータは決して起こらないほどに遅くなる可能性のある遅れの値が典型的であり、そうでないとデータが遅すぎるとそれは実行可能ではない。 –