【发布时间】:2019-07-20 12:21:51
【问题描述】:
我正在尝试以 10 秒的频率从谷歌云 pubsub 流中显示数据,但是我收到此错误:
java.lang.IllegalArgumentException:无法输出时间戳为 2019-07-20T12:13:04.875Z。输出时间戳不得早于当前输入的时间戳 (2019-07-20T12:13:05.591Z) 减去允许的偏差(0 毫秒)。有关更改允许的倾斜的详细信息,请参阅 DoFn#getAllowedTimestampSkew() Javadoc。 org.apache.beam.runners.dataflow.worker.repackaged.org.apache.beam.runners.core.SimpleDoFnRunner$DoFnProcessContext.checkTimestamp(SimpleDoFnRunner.java:587) org.apache.beam.runners.dataflow.worker.repackaged.org.apache.beam.runners.core.SimpleDoFnRunner$DoFnProcessContext.outputWithTimestamp(SimpleDoFnRunner.java:566) org.apache.beam.sdk.transforms.DoFnOutputReceivers$WindowedContextOutputReceiver.outputWithTimestamp(DoFnOutputReceivers.java:80) org.apache.beam.sdk.transforms.WithTimestamps$AddTimestampsDoFn.processElement(WithTimestamps.java:136)
这是导致错误的代码:
eventStream
.apply("Add Event Timestamps",
WithTimestamps.of((Event event) -> new Instant(event.getTime())))
.apply("Window Events",
Window.<Event>into(FixedWindows.of(Duration.parseDuration("10s"))));
这是什么原因,什么是合适的解决方案?
【问题讨论】:
标签: java google-cloud-dataflow apache-beam windowing