2016-05-16 10 views
2

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の概念)がウィンドウの最後を通過するときにウィンドウの結果を出力します。デフォルトのトリガーは反復ベースで発行されます。つまり、遅延データは定義どおりにウォーターマークの後に到着し、トリガーをトリップし、遅い要素が到着したときに放出されます。

ウォーターマークを過ぎたデータは完全に破棄されますか?または、時間内に到着したときにウィンドウが表示され、代わりに単独で放射される他のデータでは放出されませんか?

答えて

1

デフォルトの「ウィンドウとトリガー戦略」は、遅延データを破棄します。 WindowingStrategyは、ウィンドウ処理、トリガリング、および許可された遅延などのいくつかの他のパラメータで構成されるオブジェクトです。デフォルト許容待ち時間は0であるため、遅延データ要素は破棄されます。

デフォルトのトリガーは遅延データを処理します。デフォルトのWindowingStrategyを使用し、許可された遅延のみを変更すると、すべてのオンタイムデータ用に1つの出力ペインを含むPCollectionが受信され、ほぼすべての遅延エレメントの新しい出力ペインが表示されます。

+0

すぐにお返事ありがとう@ben。したがって、デフォルトのウィンドウング戦略でこれを正しく理解している場合: *時間通りに到着するデータは、1つの出力ペインで出力されます。 *遅れているがallowedLateness内に到着したデータポイントは、それ自身の出力ペイン(約)で出力されます。 * allowedLatenessより遅れて到着するデータポイントは破棄されます。 allowedLatenessより後で提供されるデータをキャプチャする方法はありますか?データフローの使用例の1つは、遅くとも到着したかどうかにかかわらず、すべてのクエリを最終的に数える必要がある課金システムです。 – LeeW

+1

allowedLatenessの後に到着するすべてのデータは破棄されます。すべての遅延データに応答する場合は、それに応じてallowedLatenessを設定する必要があります。典型的な使用例では、遅いデータが受け入れられなくなる時点(日/週/月)があります。システムは、allowedLatenessがこれまでになくなるまで、すべてのウィンドウのデータを保持する必要があり、それ以上のデータはそのウィンドウに対して考慮されません。遅れたデータは決して起こらないほどに遅くなる可能性のある遅れの値が典型的であり、そうでないとデータが遅すぎるとそれは実行可能ではない。 –