将 flink uid 命名为运算符的最佳实践
best practice of naming flink uid to operator
是否有为运算符命名 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")
或者有一些rules/recommendations命名uid的?
AFAIK,您可以使用任何字符串作为 UID,只要它(显然)对于您的工作流程是唯一的。但我认为,展望未来,Flink 将提供对保存点数据的更好访问,其中包括 UID。因此,您可能希望使用更具描述性的名称,可能与数字结合使用以帮助确保唯一性。
UID 没有命名约定,但在我们的团队中,我们使用与 operator.name() 中使用的相同的值。 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
必须是唯一的,否则作业提交将失败,因此定义格式样式很有帮助。 Flink docs 详细了解 uid
命名的重要性。它还建议将 .name
与 .uid
一起使用,以便为日志记录和指标指定一个运算符。
一种可能的样式是使用内插字符串为每个运算符制作一个唯一的 uid
。 有很好的命名规范..
例子:
如果运算符是将电子邮件地址更改为域的映射函数,并且源事件来自名为 emailEvents
的 kafka 主题
mapEmailAddressToDomain($emailEvents)
是否有为运算符命名 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")
或者有一些rules/recommendations命名uid的?
AFAIK,您可以使用任何字符串作为 UID,只要它(显然)对于您的工作流程是唯一的。但我认为,展望未来,Flink 将提供对保存点数据的更好访问,其中包括 UID。因此,您可能希望使用更具描述性的名称,可能与数字结合使用以帮助确保唯一性。
UID 没有命名约定,但在我们的团队中,我们使用与 operator.name() 中使用的相同的值。 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
必须是唯一的,否则作业提交将失败,因此定义格式样式很有帮助。 Flink docs 详细了解 uid
命名的重要性。它还建议将 .name
与 .uid
一起使用,以便为日志记录和指标指定一个运算符。
一种可能的样式是使用内插字符串为每个运算符制作一个唯一的 uid
。
例子:
如果运算符是将电子邮件地址更改为域的映射函数,并且源事件来自名为 emailEvents
mapEmailAddressToDomain($emailEvents)