如何将新事件添加到Flink CEP数据流?

时间:2018-08-10 09:01:20

标签: java apache-flink flink-streaming complex-event-processing flink-cep

我正在使用flink 1.5.2解决CEP问题。

我的数据来自列表,系统运行时,其他一些过程会将新的Event对象添加到该列表中。它不是套接字或网络消息。我一直在阅读官方网站示例。这是我想我应该做的步骤。

  1. 使用env.fromCollection(list);创建一个DataStream;
  2. 定义图案图案
  3. 使用CEP.pattern(data_stream,pattern)获取PatternStream
  4. 使用pattern_stream.select(...实现选择接口...)获取复杂事件结果作为DataStream

但是我的输入流应该不受限制。我没有在DataStream <>对象中找到任何add()方法。我该如何完成?而且,是否需要告诉DataStream <>何时清除过时的事件?

1 个答案:

答案 0 :(得分:1)

仅当使用预先固定的有界输入集(例如编写测试或只是进行实验)时,集合才适合用作Flink的输入源。如果您想要无限制的流,则需要选择其他来源,例如套接字或诸如Kafka之类的消息排队系统。

套接字很容易用于实验。在Linux和MacOS系统上,您可以使用

nc -lk 9999

创建一个Flink可以绑定到端口9999的套接字,并且您作为nc(netcat)输入提供的任何内容都将一次流进Flink作业中。 Netcat也可用于Windows,但尚未预先安装。

但是,您不应该计划在生产环境中使用套接字,因为它们不能倒回(这对于在故障恢复期间使用Flink获得准确的结果至关重要)。