错过窗口和.withAllowedLateness周期的后期数据将从管道中删除,如文档所示的这里
关于这种行为,我有几个问题:
发布于 2020-01-22 21:47:37
LateDataDroppingDoFnRunner代码完成的,这是用于从过期窗口删除数据的负责任代码:for (WindowedValue<InputT> input : concatElements) {
BoundedWindow window = Iterables.getOnlyElement(input.getWindows());
if (canDropDueToExpiredWindow(window)) {
// The element is too late for this window.
droppedDueToLateness.inc();
WindowTracing.debug(
"{}: Dropping element at {} for key:{}; window:{} "
+ "since too far behind inputWatermark:{}; outputWatermark:{}",
LateDataFilter.class.getSimpleName(),
input.getTimestamp(),
key,
window,
timerInternals.currentInputWatermarkTime(),
timerInternals.currentOutputWatermarkTime());
}
}请注意,日志具有DEBUG级别,因此您可能看不到它。正如解释过的这里一样,要覆盖Dataflow中的级别,您可以使用--defaultWorkerLogLevel=DEBUG,甚至更好的是指定一个特定的类,比如--workerLogLevelOverrides={"org.apache.beam.sdk.util.WindowTracing":"DEBUG"}。明智地选择密钥可以帮助公开信息以识别丢弃的消息(即数据沿袭)。
droppedDueToLateness是一个计数器度量,每当我们删除一个元素:droppedDueToLateness.inc();时,它就会递增。您可以使用资源类型dataflow_job和度量custom.googleapis.com/dataflow/droppedDueToLateness的堆栈驱动程序监视它。

https://stackoverflow.com/questions/59852691
复制相似问题