Java flink流媒体是否具有缓存/持久化功能?(像火花一样)
我有一个Flink流媒体程序,经过长时间的转换逻辑后,它有分支处理逻辑。是否会多次执行长转换逻辑?伪代码:Java flink流媒体是否具有缓存/持久化功能?(像火花一样),java,apache-flink,flink-streaming,flink-sql,Java,Apache Flink,Flink Streaming,Flink Sql,我有一个Flink流媒体程序,经过长时间的转换逻辑后,它有分支处理逻辑。是否会多次执行长转换逻辑?伪代码: env = getEnvironment(); DataStream<Event> inputStream = getInputStream(); tempStream = inputStream.map(very_heavy_computation_func) output1 = tempStream.map(func1); output1.addSink(sink1);
env = getEnvironment();
DataStream<Event> inputStream = getInputStream();
tempStream = inputStream.map(very_heavy_computation_func)
output1 = tempStream.map(func1);
output1.addSink(sink1);
output2 = tempStream.map(func2);
output2.addSink(sink2);
env.execute();
env=getEnvironment();
DataStream inputStream=getInputStream();
tempStream=inputStream.map(计算量非常大)
output1=tempStream.map(func1);
输出1.addSink(sink1);
output2=tempStream.map(func2);
输出2.addSink(sink2);
execute();
问题:
- 将执行多少次
inputStream.map(非常\u繁重的\u计算\u func)
- 一两次
- 如果是两次,如何缓存
(或其他方法)以避免前一次转换被多次执行tempStream
Executed expensive computation for: 3
Executed expensive computation for: 1
Executed expensive computation for: 2
9> 3
8> 2
8> 2
9> 3
7> 1
7> 1
公共类测试程序{
公共静态void main(字符串[]args)引发异常{
StreamExecutionEnvironment env=StreamExecutionEnvironment.getExecutionEnvironment();
SingleOutputStreamOperator流=环境fromElements(1、2、3)
.map(i->{
System.out.println(“为“+i”执行了昂贵的计算);
返回i;
});
stream.map(i->i).addSink(新的PrintSinkFunction());
stream.map(i->i).addSink(新的PrintSinkFunction());
execute();
}
}
生产(例如,在我的机器上):
您还可以找到一个更技术性的答案,解释如何将记录复制到下游操作员,而不是多次运行源/操作员