Аккумулятор вывода пакетной программы Flink не работает - PullRequest
0 голосов
/ 28 апреля 2020
    ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    ......
    JobExecutionResult jobExecutionResult = env.execute(XXXOffline.class.getName());
    int records = jobExecutionResult.<Integer>getAccumulatorResult("counter");
    LOGGER.info("total records: {}", records);

Однако журнал не был записан в файл журнала (ps: другой вывод журнала работает хорошо). Я думаю, что env.execute () блокирует вызов, и когда все подзадачи заканчиваются, выполняется getAccumulatorResult (). Я не знаю, почему не работает вывод журнала последней строки.

1 Ответ

1 голос
/ 28 апреля 2020

Из документов видно, что

Аккумуляторы - это простые конструкции с операцией добавления и окончательным накопленным результатом, который доступен после завершения задания.

Итак, как вы выяснили, нет способа получить доступ к аккумулятору до завершения задания (например, env # execute возвращает). Они могут быть использованы для организации небольших (ограниченных) рабочих мест. Я часто использую его для интеграционных тестов, чтобы сформулировать утверждения.

Для неограниченных заданий они не имеют явного преимущества. Вместо этого вы хотите использовать метрики .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...