除了使用.startnewchain()之外,还有没有其他方法可以在集群gui中拆分flink任务?

f87krz0w  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(310)

flink集群的gui对我来说非常有用,特别是作业的计划,这样您就可以看到从作业的哪个部分发送到另一部分的记录的数量。但我遇到的一个问题是,如果不在函数之间使用.startnewchain(),则从一个函数发送到另一个函数的数据会产生误导。
举个例子:
这里,代码在finalerroroutputstream上使用.startnewchain()。

在群集中运行时,gui将显示以下内容:

outputdatastream有10476条记录,finalerroroutputstream显示为一个单独的任务(不确定“task”在技术上是否是正确的术语,但我称之为“task”),显示它已收到8860条记录。
现在,如果我们从finalerroroutputstream中删除.startnewchain(),我们将在gui中得到:

outputdatastream已经输出了10507条记录,我们不知道其中有多少记录进入了finalerroroutputstream(是的,我们可以在TaskMetrics选项卡中设置图表,但目标只是能够从这个标准概述中分辨出来),而且因为finalerroroutputstream有一个接收器,它显示finalerroroutputstream没有输出任何记录。如果你把这个展示给一个不熟悉Flink的人看,那么你会感到困惑。
因此,使用.startnewchain()是一个更好的解决方案,可以显示有多少记录转到了何处,但问题是.startnewchain()确实会对性能造成影响。
还有一些我见过的工作,如果你不使用.startnewchain(),它只是工作计划中的一个正方形,尽管里面发生了很多事情。
所以我的问题是.startnewchain()是获得此行为的唯一方法,还是有其他选项可以提供对作业“计划”的洞察?

jtjikinw

jtjikinw1#

不幸的是,没有别的办法。gui和从中读取数据的后台数据结构只知道任务(您使用了正确的术语),而不知道操作符(任务的各个部分)。

相关问题