为什么flink batch job make print(),count()作为单个作业

93ze6v8z  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(344)

我正在写一个flink批处理作业,并将许多print()添加到我的 DateSet<> 用于调试。然后在k8s中使用job cluster模式部署作业,job manager是 k8s job ,并在第一次打印完成时停止。
最后我打开了一个 ExecutionEnvironment.createLocalEnvironmentWithWebUI(config) 在本地环境中,我发现flink用不同的作业id逐个执行作业,这些作业是我整个作业的子作业。
如果是这样,为什么Flink要设计这种机制?是否需要删除生产环境中的所有print()函数?

dgsult0t

dgsult0t1#

根据dataset.print文档:
此方法立即触发程序执行,类似于collect()和count()方法
所以不,你不能洒 print() 整个工作流程中的语句。您可以创建一个filterfunction,它(a)从不过滤任何内容,(b)使用日志语句来记录传递给它的数据。注意,您需要小心不要处理太多数据,否则您可以用日志输出填充节点的磁盘。

相关问题