Apache flink 跨Flink转换重复使用数据流

Apache flink 跨Flink转换重复使用数据流,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我有一个数据流(比如inStream),我需要应用两个不同的转换列表来生成两个不同的输出流(比如outStream1和outStream2) 在源流上应用复杂的转换列表之后,也会构造inStream 现在,我的问题是,既然inStream需要跨转换的两个分支重用,有没有办法缓存这个inStream并跨两个分支重用它 Spark解决这个问题的方法是使用rdd.cache()方法,其中inStream缓存在内存中,并在转换过程中重复使用。我想知道Flink中是否存在类似的构造来解决这个问题 另一个问

我有一个数据流(比如inStream),我需要应用两个不同的转换列表来生成两个不同的输出流(比如outStream1和outStream2)

在源流上应用复杂的转换列表之后,也会构造inStream

现在,我的问题是,既然inStream需要跨转换的两个分支重用,有没有办法缓存这个inStream并跨两个分支重用它

Spark解决这个问题的方法是使用rdd.cache()方法,其中inStream缓存在内存中,并在转换过程中重复使用。我想知道Flink中是否存在类似的构造来解决这个问题

另一个问题是在Flink中如何触发程序执行? 在Spark中,当遇到Spark操作时,程序将被延迟评估并触发执行

根据我对Flink的理解(如果错误,请更正),Flink JobManager创建了一个决定程序流的执行图。但是,它是否自己进行上述指定的数据流重用


谢谢

如果我没有错的话,您正在尝试执行inStream.map(转换1)和in.map(转换2),我没有真正理解您所说的“在源流上应用复杂的转换列表后也会构造inStream”但由于Flink是一个事件处理器,所以除了windows之外,我并不真正了解Flink中的数据缓存。Hi Biplob在重新使用流时需要缓存(就像Spark的情况一样),还是由Flink系统自动处理?不,如果您正在处理Flink数据流,您不应该需要缓存。我可以想象缓存只在批处理程序(使用数据集API)的情况下使用,但即使在这种情况下,Flink也会自动进行优化。如果我没有错的话,您正在尝试在stream.map(transformation1)和in.map(transformation2)中执行缓存,我并没有真正理解您的意思“instream也是在源流上应用复杂的转换列表后构建的”,但由于Flink是一个事件处理器,因此除了windows之外,我并不真正了解Flink中的数据缓存。Hi Biplob是需要缓存的(就像Spark一样)重新使用流时,还是由Flink系统自动处理?不,如果您正在处理Flink数据流,您不应该需要缓存。我可以想象缓存仅用于批处理程序(使用数据集API),但即使在这种情况下,Flink也会自动优化。