У меня есть программа потоковой передачи 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();
Вопросы:
- Сколько раз будет выполнено
inputStream.map(very_heavy_computation_func)
? - Один или два раза?
- Если дважды, как я могу кэшировать
tempStream
(или другой метод), чтобы предыдущее преобразование не выполнялось несколько раз?