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条答案
按热度按时间nkoocmlb1#
从文件上你可以看到
累加器是简单的构造,带有一个add操作和一个最终的累加结果,在作业结束后可用。
因此,正如您所了解的,在作业终止之前,无法访问累加器(例如,env#execute returns)。它们可用于编排较小(有界)的作业。我经常在集成测试中使用它来表达Assert。
对于无限的工作,他们没有明显的好处。您希望改用度量。