代码之家  ›  专栏  ›  技术社区  ›  Maxi Wu

如何向flink CEP数据流添加新事件?

  •  0
  • Maxi Wu  · 技术社区  · 6 年前

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

    1. 使用env.fromCollection(list)创建数据流;
    2. 使用CEP.pattern(数据流,pattern)获取pattern stream
    3. 使用pattern_stream.select(…implement select interface…)将复杂事件结果作为数据流

    但是我的输入流应该是无限的。在DataStream<gt;对象中找不到任何add()方法。我该怎么做?另外,我是否需要告诉DataStream<gt;何时清理过时的事件?

    1 回复  |  直到 6 年前
        1
  •  1
  •   David Anderson    6 年前

    当使用预先固定的有界输入集(如编写测试或只是进行实验)时,集合只适合用作Flink的输入源。如果你想要一个无边界的流,你需要选择一个不同的源,比如一个socket或者一个像Kafka这样的消息队列系统。

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

    nc -lk 9999
    

    创建Flink可以在端口9999上绑定的套接字,以及作为输入提供给 nc (netcat)将一次一行地流到您的Flink作业中。Netcat也可用于Windows,但不是预先安装的。

    但是,您不应该计划在生产中使用插座,因为它们不能被重新缠绕(这对于在故障恢复期间使用Flink获得准确的结果至关重要)。