为什么 flink 批处理作业将 print(), count() 作为单个作业



我正在编写一个 flink 批处理作业,并将许多 print(( 添加到我的DateSet<>中进行调试。然后在k8s中部署作业,作业集群模式是作业管理器k8s job,并在第一次打印完成时停止。

最后我在本地环境中打开一个ExecutionEnvironment.createLocalEnvironmentWithWebUI(config),我发现flink执行作业一个接一个,具有不同的作业ID,这些作业是我完整作业的子作业。

如果是这样,为什么要 flink 设计这个机制? 我需要删除生产环境中的所有 print(( 函数吗?

根据 DataSet.print 文档:

此方法会立即触发程序执行,类似于 collect(( 和 count(( 方法

所以不,你不能在整个工作流程中撒print()语句。您可以创建一个 FilterFunction,该函数 (a( 从不筛选任何内容,并且 (b( 使用日志记录语句来记录传递给它的数据。请注意,您需要注意不要处理太多数据,否则您可能会用日志记录输出填满节点的磁盘。

相关内容

  • 没有找到相关文章