繁体   English   中英

Flink DataStream-如何从输入元素启动源?

[英]Flink DataStream - how to start a source from an input element?

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

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

输出数据可以连接到单个DataStream 例如

Input Requests: A, B
Data produced:
 A1
 B1
 A2
 A3
 B2
 ...

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

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

您通常希望使用AsyncFunction ,它(异步)可以采用一个输入元素,调用某些外部服务,并发出结果集合。

另请参阅Apache Flink培训-异步IO

-肯

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM