Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/nginx/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java flink流媒体是否具有缓存/持久化功能?(像火花一样)_Java_Apache Flink_Flink Streaming_Flink Sql - Fatal编程技术网

Java 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);

我有一个Flink流媒体程序,经过长时间的转换逻辑后,它有分支处理逻辑。是否会多次执行长转换逻辑?伪代码:

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
    (或其他方法)以避免前一次转换被多次执行
您只需大致准确地尝试一下您的示例,就可以轻松地回答(1):

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();
}
}
生产(例如,在我的机器上):

您还可以找到一个更技术性的答案,解释如何将记录复制到下游操作员,而不是多次运行源/操作员