将flink uid命名为operator的最佳实践

omjgkv6w  于 2021-06-24  发布在  Flink
关注(0)|答案(3)|浏览(863)

有没有最佳的命名方法 UID 给接线员?能不能简单点

stream.flatMap(new FlatMapFunc).uid("1")
    .assignTimestampsAndWatermarks(new TimestampExtractor).uid("2")
    .keyBy(r => r.key )
    .timeWindow(Time.minutes(10))
    .allowedLateness(Time.minutes(30))
    .process(new ProcessFunc).uid("3")

或者有一些命名uid的规则/建议?

iszxjhcz

iszxjhcz1#

每个 uid 必须是唯一的,否则作业提交将失败,因此定义格式样式很有帮助。Flink博士详细介绍了 uid 命名。它还建议使用 .name.uid 以便有一个用于记录和度量的命名操作符。
一种可能的风格是使用插值字符串来创建一个独特的 uid 每个操作员。以西结有很好的命名标准。。
举个例子:
如果操作符是将电子邮件地址更改为域的Map函数,并且源事件来自名为
emailEvents mapEmailAddressToDomain($emailEvents)

kx5bkwkv

kx5bkwkv2#

好吧,你可以使用任何字符串作为uid,只要它(显然)对你的工作流是唯一的。但我认为,今后flink将提供更好的保存点数据访问,其中包括UID。所以你应该用一个更具描述性的名字,也许和一个数字结合起来,以确保唯一性。

5jvtdoz2

5jvtdoz23#

uid没有命名约定,但在我们的团队中,我们使用的值与operator.name()中使用的值相同。name值用于呈现flinkui中的操作符框
这样我们就有了这样的代码,对我们来说语义和简单:

streamExecutionEnvironment
        .addSource(new KafkaConsumer(kafkaConsumerOptions))
        .name("Kafka topic reader").uid("Kafka topic reader")
        .filter(new CreatedBy("my uncle"))
        .name("Created by my uncle filter").uid("Created by my uncle filter")
        .map(new ToInvoice())
        .name("To invoice mapper").uid("To invoice mapper")

相关问题