2017-11-07 11 views

答えて

0

GroupByKeyデフォルトでは、入力PCollectionの透かしがそのウィンドウの最後に到達すると、特定のウィンドウが起動します。発砲していない場合は、入力PCollectionの透かしが進んでいないか、または進んでいる可能性がありますが、すべてのデータが最後に破棄されることになります。

理由はPCollectionの製造方法によって異なります。私はあなたがPubSubIO.read()から直接それを読んでいるかもしれないと思います。 PubSubの透かしを計算するのは難しいです(特にカスタムタイムスタンプ属性を使用している場合)。ダイレクトランナにはこの計算にいくつかの既知の問題があります。 Dataflowランナーは、実行時に透かしをより正確に計算する(ただし、まだ完全にはいない)別の実装に置き換えます。

残念ながら、現在のところ、ダイレクトランナーのウォーターマークの進捗状況を監視するツールはありません。いくつかのログステートメントをPubsubUnboundedSource.PubsubReader.getWatermark()に追加することでこれをデバッグすることができます。読み込みとGBKの間にParDoを追加して、受け取ったイベントタイムスタンプ(c.timestamp())を出力することもできます。

また、遅れデータを削除しないようにウィンドウ処理方法を設定することもできます。Managing late dataを参照してください。

関連する問題