Java FlinkCEP的执行时间

Java FlinkCEP的执行时间,java,scala,apache-flink,flink-streaming,flink-cep,Java,Scala,Apache Flink,Flink Streaming,Flink Cep,我使用Flink和FlinkCEP检测数据流上的复杂事件。出于研究目的,我只需要测量识别时间 我使用的是Flink/FlinkCEP-1.7.1。我使用env.fromCollection()函数在Flink环境中创建流。 之后,我使用FlinkCEP:CEP.pattern(..)以及其他select和print功能 我只找到了这篇文章:这很有帮助。它提出了一种返回流环境进程执行时间的解决方案。这不是我想要的 我注意到返回的值包括其他操作符的时间,例如.assignAscendingTimes

我使用Flink和FlinkCEP检测数据流上的复杂事件。出于研究目的,我只需要测量识别时间

我使用的是
Flink/FlinkCEP-1.7.1
。我使用
env.fromCollection()
函数在Flink环境中创建流。 之后,我使用FlinkCEP:
CEP.pattern(..)
以及其他
select
print
功能

我只找到了这篇文章:这很有帮助。它提出了一种返回流环境进程执行时间的解决方案。这不是我想要的

我注意到返回的值包括其他操作符的时间,例如
.assignAscendingTimestamps(x=>x.TimeStamp())
,因此我无法使用它

有没有办法只测量
CEP.pattern
过程的时间?
在这种情况下,我也找不到对我有帮助的度量,除非我遗漏了什么…

您可以在每条记录中添加一个时间戳字段,并在CEP之前使用mapFunction将当前时间放入该字段。然后使用它来计算紧接着在RichMapFunction中的CEP内经过的时间——然后可以通过自定义度量报告,或者发送到接收器。这将增加一点开销,但不会太多。只要您可以避免在这两个函数之间进行任何keyBy或重新平衡调用,所有涉及的内容都将通过函数调用链接在一起,而无需任何序列化或网络开销。

您可以在每个记录中添加时间戳字段,并在CEP之前使用mapFunction将当前时间放入该字段。然后使用它来计算紧接着在RichMapFunction中的CEP内经过的时间——然后可以通过自定义度量报告,或者发送到接收器。这将增加一点开销,但不会太多。只要您可以避免在这两个函数之间进行任何keyBy调用或重新平衡调用,所涉及的所有内容都将通过函数调用链接在一起,而不会产生任何序列化或网络开销