Хобрук: Ваш путь к мастерству в программировании

Есть ли у потоковой передачи flink функция кэширования/сохранения? (как искра)

У меня есть программа потоковой передачи 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 (или другой метод), чтобы предыдущее преобразование не выполнялось несколько раз?

Ответы:


1

На самом деле вы можете легко ответить (1), просто попробовав более или менее точно ваш пример:

public class TestProgram {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        SingleOutputStreamOperator<Integer> stream = env.fromElements(1, 2, 3)
                .map(i -> {
                    System.out.println("Executed expensive computation for: " + i);
                    return i;
                });

        stream.map(i -> i).addSink(new PrintSinkFunction<>());
        stream.map(i -> i).addSink(new PrintSinkFunction<>());

        env.execute();
    }
}

производит (например, на моей машине):

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

Вы также можете найти более технический ответ здесь, который объясняет, как записи реплицируются нижестоящим операторам, а не запуску источника/оператора. много раз.

02.06.2021
Новые материалы

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..