java命名flink操作符

5jvtdoz2  于 2021-06-24  发布在  Flink
关注(0)|答案(2)|浏览(337)

我正在使用 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");

或者第一个名字会被第二个名字覆盖?当然,我可以尝试并找出答案,但我也想了解原因。

ax6ht2ek

ax6ht2ek1#

是的,你可以说出每一个转变。但正如@diegoreico所指出的,如果操作符是流水线的,那么flinkui将显示它们分组到dag中的单个框(节点)中。

crcmnpdw

crcmnpdw2#

就我所使用的name()函数而言,您可以使用datastream或dataset api执行的每个转换都是一个操作,因此在第二种情况下,图形将如下所示

"Transformation A" -------> "Transformation B"

但在flink dashborad上,这些任务有可能被分组到同一个任务中,如下所示:

-----------------------         -----------------------
| SOURCE              |  --->   |"Transformation A" ->| ---> More operations
-----------------------         |"Transformation B"   |
                                -----------------------

相关问题