到目前为止,我了解到有3种方法可以处理Flink中的后期数据:
>
删除延迟事件(这是事件时间窗口运算符的默认行为。(因此,延迟到达的html" target="_blank">元素不会创建新窗口。)(
重定向延迟事件(也可以使用side输出功能将延迟事件重定向到另一个数据流)
通过包含延迟事件更新结果(重新计算不完整的结果并发出更新)
我不太清楚非窗口操作符的延迟事件会发生什么,特别是当时间戳被分配到源时。这里我有一个FlinkKafkaConsumer:
new FlinkKafkaConsumer(
liveTopic,
deserializer,
config.toProps
).setStartFromTimestamp(startOffsetTimestamp)
.assignTimestampsAndWatermarks(
WatermarkStrategy
.forBoundedOutOfOrderness[String](Duration.ofSeconds(20))
)
如果我的Kafka分区中的某些数据出现了问题,比如说,记录的时间戳延迟了1分钟,那么当Flink使用这些数据时,这些数据会被丢弃吗?我可以配置某种类型的AllowedLatence(如窗口操作符)吗?
唯一删除延迟事件的运算符是那些必须对如何处理每个事件做出基于时间的决定的运算符。因此,默认情况下,基于事件时间的窗口和CEP删除延迟事件(CEP这样做是因为它必须首先对事件流进行基于时间的排序,并且延迟事件错过了被排序到位的机会)。在这两种情况下,这些API都提供延迟事件流作为侧输出通道。
Flink SQL的时态运算符也会删除延迟事件。到目前为止,Table/SQL还没有提供任何方法来捕获或容纳这些延迟事件(不使用DataStream API)。
但其他所有运营商都只是对事件进行操作,而不关注它们的迟到。在ProcessFunction
中,您可以检查时间戳并将其与当前水印进行比较,并自行决定如何处理延迟事件。
如何在Flink中的迭代数据流循环中处理时间戳? null
我有一些问题。 基于类中的时间戳,我想做一个逻辑,排除在1分钟内输入N次或更多次的数据。 UserData类有一个时间戳变量。 起初我试着用一个翻滚的窗户。 但是,滚动窗口的时间计算是基于固定时间的,因此无论UserData类的时间戳如何,它都不适合。 如何处理流上窗口UserData类的时间戳基? 谢谢。 附加信息 我使用这样的代码。 我试了一些测试。150个样本数据。每个数据的时间戳增加1秒。
null 此窗口具有一个允许延迟为一分钟的BoundedOutoFordernesTimeStampExtractor。 水印:据我的理解,Flink和Spark结构化流中的水印定义为(max-event-timestamp-seen-so-far-alloged-lateness)。事件时间戳小于或等于此水印的任何事件都将被丢弃并在结果计算中忽略。 在此场景中,几个事件到达Flink运算符时具有
我正在研究一个Flink流式处理器,它可以从Kafka读取事件。这些事件由其中一个字段键控,并且在减少和输出之前应该在一段时间内加窗。我的处理器使用事件时间作为时间特性,因此从它所消耗的事件中读取时间戳。以下是它目前的样子: 我所知道的事件如下: null null
问题内容: 在Java应用程序中,使用日期时间和时间戳的混合在MySQL数据库中添加和输入日期信息方面有什么好的折衷办法? 问题答案: 在Java方面,日期通常由(设计欠佳,但不包括在内)表示。它基本上是由支持大纪元时间中的味道long,也称为时间戳。它包含有关日期和时间部分的信息。在Java中,精度以毫秒为单位。 在SQL方面,有几个标准的日期和时间类型,DATE,TIME和TIMESTAMP(