Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Streaming ApacheFlink:如何将自定义逻辑应用于后期事件?_Streaming_Apache Flink_Flink Streaming - Fatal编程技术网

Streaming ApacheFlink:如何将自定义逻辑应用于后期事件?

Streaming ApacheFlink:如何将自定义逻辑应用于后期事件?,streaming,apache-flink,flink-streaming,Streaming,Apache Flink,Flink Streaming,尽管Flink有一些内置的工具来处理延迟数据,比如允许延迟,但我还是希望自己来处理延迟数据。例如,我希望监视延迟事件或将它们保存到数据库中 我该怎么做呢?通常在窗口操作符中使用延迟和水印。如果您使用的是window操作符,您可以像这样使用sideoutput: val windowStream = eventStream.keyBy(output => output.rule) .window(TumblingEventTimeWindows.of(Time.of(5, TimeUni

尽管Flink有一些内置的工具来处理延迟数据,比如允许延迟,但我还是希望自己来处理延迟数据。例如,我希望监视延迟事件或将它们保存到数据库中


我该怎么做呢?

通常在窗口操作符中使用延迟和水印。如果您使用的是window操作符,您可以像这样使用sideoutput:

val windowStream = eventStream.keyBy(output => output.rule)
  .window(TumblingEventTimeWindows.of(Time.of(5, TimeUnit.MINUTES)))
  .sideOutputLateData(lateOutputTag)
并从sideoutput中获取如下最新元素:

windowStream.getSideOutput(lateOutputTag).print()
ProcessFunction(
ProcessFunction
KeyedProcessFunction
等)通过
上下文
对象提供对记录的事件时间戳和
TimerService
的访问。
TimerService
提供对当前水印的访问

您可以通过比较事件时间戳和水印来识别延迟记录。如果时间戳小于或等于水印,则事件延迟


如何处理迟到的事件取决于你自己。您可以标记它们,也可以丢弃它们,通过侧面输出发射它们,或者使用它们执行任何类型的计算。

感谢您的帮助!我试图通过“ctx.timerService().currentWatermark()”获取水印,但它始终返回-9223372036854775808,我是否遗漏了任何内容?是否启用了事件时间处理,是否分配了水印?