已经错过了窗口和晚期数据.withAllowedLateness周期从管道作为记录下车这里
我对这种行为有几个问题:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,日志具有DEBUG级别,因此您可能看不到它。正如解释这里,覆盖在数据流的水平,就可以使用--defaultWorkerLogLevel=DEBUG,或者甚至更好,指定特定的类如--workerLogLevelOverrides={"org.apache.beam.sdk.util.WindowTracing":"DEBUG"}。明智地选择您的密钥有助于公开信息以识别丢弃的消息(即数据沿袭)。
droppedDueToLateness是一个 Counter 指标,每次我们删除一个元素时它都会增加:droppedDueToLateness.inc();。您可以使用 Stackdriver 和资源类型dataflow_job和指标来监控它custom.googleapis.com/dataflow/droppedDueToLateness。| 归档时间: |
|
| 查看次数: |
552 次 |
| 最近记录: |