Apache flink 将flink uid命名为运算符的最佳实践
是否有为操作员命名Apache flink 将flink uid命名为运算符的最佳实践,apache-flink,flink-streaming,Apache Flink,Flink Streaming,是否有为操作员命名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(
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的规则/建议?好的,您可以为uid使用任何字符串,只要它(显然)对于您的工作流是唯一的。但我认为,今后,Flink将提供更好的保存点数据访问,其中包括UID。因此,您希望使用更具描述性的名称,可能与数字结合使用,以帮助确保唯一性。UID没有命名约定,但在我们的团队中,我们使用的值与运算符.name()中使用的值相同。名称值用于在Flink UI中呈现运算符框 这样我们就有了这样的代码,对我们来说语义简单:
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")
每个
uid
必须是唯一的,否则作业提交将失败,因此定义格式样式会有所帮助。详细了解uid
命名的重要性。它还建议将.name
与.uid
一起使用,以便为日志记录和度量使用命名运算符
一种可能的风格是使用插值字符串为每个运算符生成唯一的uid
。有很好的命名标准
一个例子:
如果操作员是将电子邮件地址更改为域的映射函数,并且源事件来自名为emailEvents
mapEmailAddressToDomain($emailEvents)