【发布时间】:2017-09-26 05:38:01
【问题描述】:
(5d8e3f411b5a4ccb): java.lang.IllegalStateException: TimestampCombiner 将元素从 2017-09-25T13:53:08.725Z 移动到更早的时间 2017-09-25T13:53:08.718Z 用于窗口 [2017-09-25T13:53 :08.088Z..2017-09-25T13:53:08.719Z)
可能是什么原因?
WindowFn 代码很简单:
public class BQTablePartitionWindowFn extends NonMergingWindowFn<Object, IntervalWindow> {
/**
*
*/
private static final long serialVersionUID = 1L;
private IntervalWindow assignWindow(AssignContext context) {
TableRow tableRow = (TableRow) context.element();
String timestamp = tableRow.get(BQConstants.LOG_TIME).toString();
String currentTime = DateUtil.getFormatedDate(new Date());
DateTimeFormatter formatter = DateTimeFormat.forPattern(CommonConstants.DATE_FORMAT_YYYYMMDD_HHMMSS_SSS)
.withZoneUTC();
Instant start_point = Instant.parse(timestamp, formatter);
Instant end_point = Instant.parse(currentTime, formatter);
return new IntervalWindow(start_point, end_point);
};
@Override
public Coder<IntervalWindow> windowCoder() {
return IntervalWindow.getCoder();
}
@Override
public Collection<IntervalWindow> assignWindows(AssignContext c) throws Exception {
return Arrays.asList(assignWindow(c));
}
@Override
public boolean isCompatible(WindowFn<?, ?> other) {
return false;
}
@Override
public WindowMappingFn<IntervalWindow> getDefaultWindowMappingFn() {
throw new IllegalArgumentException(
"Attempted to get side input window for GlobalWindow from non-global WindowFn");
}
}
【问题讨论】:
-
感谢您提供的详细信息。我已经扩展了我的答案来讨论你的
WindowFn。
标签: java google-cloud-platform google-cloud-dataflow illegalstateexception