为什么 flink 批处理作业将 print(), count() 作为单个作业
why flink batch job make print(), count() as single job
我正在编写一个 flink 批处理作业,并向我的 DateSet<>
添加了许多 print() 以进行调试。然后使用作业管理器是k8s job
的作业集群模式将作业部署在k8s中,并在第一次打印完成时停止。
最后我在本地环境中打开了一个ExecutionEnvironment.createLocalEnvironmentWithWebUI(config)
,我发现flink用不同的作业id一个一个地执行作业,这些作业是我完整作业的子作业。
如果是的话,flink为什么要设计这个机制呢?我需要删除生产环境中的所有 print() 函数吗?
根据 DataSet.print documentation:
This method immediately triggers the program execution, similar to the collect() and count() methods
所以不,您不能在整个工作流程中散布 print()
语句。您可以创建一个 FilterFunction (a) 从不过滤任何内容,并且 (b) 使用日志记录语句来记录传递给它的数据。请注意,您需要注意不要处理太多数据,否则您可能会用日志输出填满节点的磁盘。
我正在编写一个 flink 批处理作业,并向我的 DateSet<>
添加了许多 print() 以进行调试。然后使用作业管理器是k8s job
的作业集群模式将作业部署在k8s中,并在第一次打印完成时停止。
最后我在本地环境中打开了一个ExecutionEnvironment.createLocalEnvironmentWithWebUI(config)
,我发现flink用不同的作业id一个一个地执行作业,这些作业是我完整作业的子作业。
如果是的话,flink为什么要设计这个机制呢?我需要删除生产环境中的所有 print() 函数吗?
根据 DataSet.print documentation:
This method immediately triggers the program execution, similar to the collect() and count() methods
所以不,您不能在整个工作流程中散布 print()
语句。您可以创建一个 FilterFunction (a) 从不过滤任何内容,并且 (b) 使用日志记录语句来记录传递给它的数据。请注意,您需要注意不要处理太多数据,否则您可能会用日志输出填满节点的磁盘。