假设我有一个名为SourceFunction<String>的Flink RequestsSource

对于来自该源的每个请求,我想订阅一个外部数据源(出于示例的目的,它可以启动一个单独的线程并开始在该线程上生成数据)。

输出数据可以在单个DataStream上连接。例如

输入请求:A,B
产生的数据:
 A1
 B1
 A2
 A3
 B2
 ...


...等等,新元素将永久添加到DataStream中。

如何编写可以做到这一点的Flink运算符?我可以使用例如FlatMapFunction

最佳答案

听起来您是在问一个运营商,在收到订阅事件之后,该运营商可以根据与外部服务的连接来发出一个或多个无限数据流。我可以看到的唯一干净的方法是在SourceFunction或自定义Operator中完成所有工作。

我不认为异步I / O可以从单个输入事件中发出无限的结果流。 ProcessFunction可以执行此操作,但只能通过其onTimer方法。

10-07 20:38