我正在写一个flink批处理作业,并将许多print()添加到我的 DateSet<>
用于调试。然后在k8s中使用job cluster模式部署作业,job manager是 k8s job
,并在第一次打印完成时停止。
最后我打开了一个 ExecutionEnvironment.createLocalEnvironmentWithWebUI(config)
在本地环境中,我发现flink用不同的作业id逐个执行作业,这些作业是我整个作业的子作业。
如果是这样,为什么Flink要设计这种机制?是否需要删除生产环境中的所有print()函数?
1条答案
按热度按时间dgsult0t1#
根据dataset.print文档:
此方法立即触发程序执行,类似于collect()和count()方法
所以不,你不能洒
print()
整个工作流程中的语句。您可以创建一个filterfunction,它(a)从不过滤任何内容,(b)使用日志语句来记录传递给它的数据。注意,您需要小心不要处理太多数据,否则您可以用日志输出填充节点的磁盘。