我正在编写一个 flink 批处理作业,并将许多 print(( 添加到我的DateSet<>
中进行调试。然后在k8s中部署作业,作业集群模式是作业管理器k8s job
,并在第一次打印完成时停止。
最后我在本地环境中打开一个ExecutionEnvironment.createLocalEnvironmentWithWebUI(config)
,我发现flink执行作业一个接一个,具有不同的作业ID,这些作业是我完整作业的子作业。
如果是这样,为什么要 flink 设计这个机制? 我需要删除生产环境中的所有 print(( 函数吗?
根据 DataSet.print 文档:
此方法会立即触发程序执行,类似于 collect(( 和 count(( 方法
所以不,你不能在整个工作流程中撒print()
语句。您可以创建一个 FilterFunction,该函数 (a( 从不筛选任何内容,并且 (b( 使用日志记录语句来记录传递给它的数据。请注意,您需要注意不要处理太多数据,否则您可能会用日志记录输出填满节点的磁盘。