Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flink 将flink uid命名为运算符的最佳实践_Apache Flink_Flink Streaming - Fatal编程技术网

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)