Flink集群的GUI对我非常有益,特别是对作业的计划,这样您就可以看到从作业的哪个部分发送到另一个部分的记录的数量。但我遇到的一个问题是,如果在函数之间不使用.startNewChain(),那么所说的从一个函数发送到另一个函数的数据是误导性的。
举个例子:
这里,代码正在finalerRorOutputstream上使用.startNewChain()。
当在集群中运行此命令时,GUI将显示以下内容:
OutputDatastream有10476条输出记录,finalerRorOutputStream显示为一个单独的任务(不确定“task”在技术上是否是正确的术语,但它是我所称的它),它显示它已接收到8860条记录。
现在,如果我们从finalerRorOutputstream中移除.startNewChain(),我们将在GUI中得到:
OutputDatastream有10507条记录,我们不知道有多少记录已进入finalerRorOutputstream(是的,我们可以在“任务度量”选项卡中设置图表,但目标只是能够从这个标准概述中分辨出来),并且因为finalerRorOutputst有一个接收器ream,它显示finalerroroutputstream没有输出任何记录。如果您要向不熟悉Flink的人展示这一点,并且说明原因,这将是令人困惑的。
因此,使用.startnewchain()是一个更好的解决方案,可以显示到哪里去了多少条记录,但问题是.startnewchain()确实会对性能产生影响。
还有一些工作我见过,如果你不使用的话,在哪里做。startnewchain()它只是工作计划中的一个正方形,即使很多工作都在里面进行。
所以我的问题是,如果.startnewchain()是获得这种行为的唯一方法,或者是否有其他选项可以提供对作业“计划”的洞察?
举个例子:
这里,代码正在finalerRorOutputstream上使用.startNewChain()。
当在集群中运行此命令时,GUI将显示以下内容:
OutputDatastream有10476条记录,finalerRorOutputStream显示为一个单独的任务(不确定“任务”在技术上是否是正确的术语,但我称之为“任务”),表明它已收到8860条记录。
现在,如果我们从finalerRorOutputstream中移除.startNewChain(),我们将在GUI中得到:
OutputDatastream有10507条记录,我们不知道有多少记录已进入finalerRorOutputStream(是的,我们可以在“任务度量”选项卡中设置图表,但目标只是能够从这个标准概述中分辨出来),因为finalerRorOutputStrea有一个接收器m,它显示finalerroroutputstream没有输出任何记录。如果你向不熟悉燧石的人展示这一点,以及它的推理,那将是令人困惑的。
因此,使用.startnewchain()是一个更好的解决方案,可以显示到哪里去了多少条记录,但问题是.startnewchain()确实会影响性能。
如果你不使用.startnewchain(),我看到一些工作是在哪里完成的,它只是工作计划中的一个正方形,尽管里面正在进行很多工作。
所以我的问题是,如果.startnewchain()是获得这种行为的唯一方法,或者是否有其他选项可以提供对作业“计划”的洞察?