Apache flink Apache Flink flatMap具有数百万输出

Apache flink Apache Flink flatMap具有数百万输出,apache-flink,Apache Flink,每当我收到一条消息时,我都想从数据库中读取,可能会返回数百万行,然后我想将这些行传递到流中。这在弗林克被认为是好的做法吗 公共静态类StatsReader实现FlatMapFunction{ 事务处理程序txor= ...; @凌驾 公共void平面图(Msg,收集器输出){ //可能是惰性和异步流 java.util.Stream结果= txor.exec(Stats.read(msg)); results.foreach(stat->out.collect(stat)); } } 编辑:

每当我收到一条消息时,我都想从数据库中读取,可能会返回数百万行,然后我想将这些行传递到流中。这在弗林克被认为是好的做法吗

公共静态类StatsReader实现FlatMapFunction{
事务处理程序txor=
...;
@凌驾
公共void平面图(Msg,收集器输出){
//可能是惰性和异步流
java.util.Stream结果=
txor.exec(Stats.read(msg));
results.foreach(stat->out.collect(stat));
}
}
编辑:

背景:我想动态运行一个报告。db基本上是一个巨大的窗口。该报告基于该窗口+实时数据。该报告具有高度的可定制性,因此很难预先处理结果或定义管道

我今天使用的是vanilla java,管道大致如下:
ReportDefinition->(elasticsearch查询+实时流)->(ReportProcessingPipeline)->(Websocket推送)

原则上这应该是可能的。但是,我建议使用而不是
FlatMapFunction


请注意,这样的设置可能需要调整检查点参数,例如检查点间隔

第一印象:这听起来是个坏主意。你能给我们提供更多的上下文吗?更大的图景是什么?@alpinegizmo,我在问题中添加了som背景。但是根据文档,异步函数只接受一个值。或者还有其他异步方式吗?您可以发出多个值,但它们必须作为
集合传递(请参阅)。因此,它们必须适合内存。这是我主要关心的问题,数据可能无法适合内存