0
    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() 执行。我不知道为什么最后一行日志输出不起作用。

4

1 回答 1

1

文档中,您可以看到

累加器是具有加法操作和最终累加结果的简单构造,在作业结束后可用。

因此,正如您所知道的,在作业终止之前无法访问累加器(例如,env#execute 返回)。它们可用于编排较小的(有界)作业。我经常将它用于集成测试以制定断言。

对于无限的工作,他们没有明显的好处。您想改用指标

于 2020-04-28T06:29:09.187 回答