除了使用.startNewChain()之外,是否还有其他方法可以在集群GUI中拆分Flink任务?

时间:2018-06-21 16:57:14

标签: apache-flink

Flink Cluster的GUI确实对我有益,特别是作业计划,这样您就可以看到从作业的哪一部分发送到另一部分的记录数量。但是我遇到的一个问题是,如果在两个函数之间不使用.startNewChain(),则据说从一个函数发送到另一个函数的数据会产生误导。

举个例子:

在这里,代码在finalErrorOutputStream上使用.startNewChain()。 Code using .startNewChain() for finalErrorOutputStream

在集群中运行此命令时,gui会显示以下内容:

enter image description here

outputDataStream已输出10,476条记录,而finalErrorOutputStream被显示为单独的任务(不确定“ task”在技术上是否正确,但我所说的就是它)表明已收到8,860条记录。

现在,如果我们从finalErrorOutputStream中删除.startNewChain(),则会在gui中得到它:

enter image description here

outputDataStream已输出10,507条记录,我们不知道其中有多少条记录进入了finalErrorOutputStream(是的,我们可以在“任务指标”标签中设置图表,但目标只是能够从中辨别标准概述),并且由于存在finalErrorOutputStream的接收器,因此显示finalErrorOutputStream尚未输出任何记录。如果您要向不熟悉Flink及其相关原因的人展示此内容,那将会令人困惑。

因此,使用.startNewChain()是更好的解决方案,以显示去往多少记录的细分,但问题是.startNewChain()确实会对性能产生影响。

我看到有些工作是在不使用.startNewChain()的地方进行的,即使其中有很多工作,它也只是工作计划中的一个正方形。

所以我的问题是.startNewChain()是否是获得此行为的唯一方法,或者是否有其他选择可以提供对工作“计划”的深入了解?

1 个答案:

答案 0 :(得分:3)

不幸的是,没有其他办法。 GUI及其从中读取数据的支持数据结构仅知道任务(您使用了正确的术语),而不是操作员(任务的各个部分)。