RowTime field should not be null, please convert it to a non-null long value.
时间: 2023-12-06 07:45:44 浏览: 263
这个错误通常出现在使用Apache Flink时,它要求数据流中的每个事件都必须包含一个非空的RowTime时间戳字段。如果你的数据流中缺少了RowTime时间戳字段,可以通过使用Flink提供的TimestampAssigner来为数据流中的每个事件分配时间戳。例如,可以使用以下代码来从数据流中提取时间戳并将其分配给RowTime时间戳字段:
```
DataStream<MyEvent> stream = ...;
stream.assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor<MyEvent>(Time.seconds(10)) {
@Override
public long extractTimestamp(MyEvent event) {
// extract timestamp from event and return as long value
return event.getTimestamp();
}
});
```
在这个例子中,我们使用BoundedOutOfOrdernessTimestampExtractor来从MyEvent事件中提取时间戳。时间戳被提取后,它将被转换为long类型并分配给RowTime时间戳字段。请注意,这里的Time.seconds(10)表示允许10秒的延迟,因此如果某个事件的时间戳比当前的水印时间晚10秒或更多,则被认为是迟到的事件。
阅读全文