Не работает выходной аккумулятор пакетной программы Flink

    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 (). Я не знаю, почему последняя строка журнала не работает.


person Qoobee    schedule 28.04.2020    source источник


Ответы (1)


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

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

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

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

person Arvid Heise    schedule 28.04.2020
comment
Моя программа - это пакетная программа для набора данных. После возврата env.execute () я должен получить результат аккумулятора и зарегистрировать его. Но на самом деле это не так. - person Qoobee; 28.04.2020
comment
Есть несколько примеров с точки зрения (тестов) [github.com/apache/flink/blob/master/flink-tests/src/test/java/ во Flink, который можно использовать для двойного- проверьте свое решение. Но строка журнала все равно должна появиться. Я скорее подозреваю, что вы неправильно настроили регистратор. Вы также можете использовать отладчик, чтобы проверить, что на самом деле происходит. - person Arvid Heise; 29.04.2020
comment
Спасибо. Наверное, проблема флинк-кластера. Программа, запущенная из локальной IDE, работает как положено. - person Qoobee; 07.05.2020