我正在使用 Flink v.1.4.0
.
我想能够在 Flink UI
. 我明白要做到这一点,我只需要使用 .name()
方法 DataSet
或者 DataStream
. 例如,如下所示:
DataSet<SomePojo> flinkDataSet = ...;
flinkDataSet
.map(new SomeTransformation())
.name("Transformation A");
我想知道的是运算符的确切定义是什么?它是数据集/数据流的密钥吗?或者元素类型?我明白,如果我申请了一个 MapFunction
它的返回类型与应用函数的元素相同,但注意到如果应用 FlatMapFunction
或者 KeyBy
或者 GroupBy
操作,当然还有应用操作。
我问这个问题的原因是因为我想了解我能让flink dag在flinkui中的粒度有多大,例如,我能给每个转换命名吗?或者运算符是由正在处理的数据集/数据流的类型定义的,因此我只能命名它们?举个例子,这样行吗?
flinkDataSet
.map(new SomeTransformation())
.name("Transformation A")
.map(new SomeOtherTransformation())
.name("Transformation B");
或者第一个名字会被第二个名字覆盖?当然,我可以尝试并找出答案,但我也想了解原因。
2条答案
按热度按时间ax6ht2ek1#
是的,你可以说出每一个转变。但正如@diegoreico所指出的,如果操作符是流水线的,那么flinkui将显示它们分组到dag中的单个框(节点)中。
crcmnpdw2#
就我所使用的name()函数而言,您可以使用datastream或dataset api执行的每个转换都是一个操作,因此在第二种情况下,图形将如下所示
但在flink dashborad上,这些任务有可能被分组到同一个任务中,如下所示: