Apache flink 将在Flink执行计划UI中显示的命名运算符、源、汇和模式

Apache flink 将在Flink执行计划UI中显示的命名运算符、源、汇和模式,apache-flink,flink-streaming,flink-cep,Apache Flink,Flink Streaming,Flink Cep,我只想给操作符和源命名。让我们举个例子 这是执行计划的截图,我从Flink Dashboard获得。这里我有两个数据流源,然后加入它们。我的问题是,我可以将这些源命名为EcgStream和Sp02-Stream,并以Join1的形式加入吗 我问这个问题的原因是因为它使可视化更容易。另外,当我翻阅这一页时,在这一页的末尾,他们提到了以下内容 请注意,任务名称和操作员名称已被压缩,因此我们可以 当延迟为0时,仍然正确区分任务和操作员 跨任务和操作员聚合。但这些压缩名称将 与Flink UI中显示的

我只想给操作符和源命名。让我们举个例子

这是执行计划的截图,我从Flink Dashboard获得。这里我有两个数据流源,然后加入它们。我的问题是,我可以将这些源命名为EcgStreamSp02-Stream,并以Join1的形式加入吗

我问这个问题的原因是因为它使可视化更容易。另外,当我翻阅这一页时,在这一页的末尾,他们提到了以下内容

请注意,任务名称和操作员名称已被压缩,因此我们可以 当延迟为0时,仍然正确区分任务和操作员 跨任务和操作员聚合。但这些压缩名称将 与Flink UI中显示的内容不匹配,该UI将显示 Scala代码作为运算符名称如果您需要这些名称 在公制中有意义,您应该在Flink中提供名称 应用程序的代码。此压缩值仅适用于以下情况: 非常长的默认名称,否则将不会是合法的度量标准 价值观


我还有另一个问题,那就是当我为CEP创建一个模式时,执行计划UI只是将其显示为一个模式。有没有办法显示出这种模式是什么样的?D。此外,如果我们有多个模式,我们应该能够将其命名为模式{1..n}

,以便为运算符指定更好的名称,请参阅。这不仅是因为它使执行计划更具可读性,而且还因为它将使您的保存点随着应用程序的发展而更可靠地恢复()。

有关为运算符指定更好名称的信息,请参阅。这是您应该做的事情,不仅因为它使执行计划更具可读性,还因为它将使您的保存点随着应用程序的发展而更可靠地恢复()。

正如@alpinegzmo所建议的,我已将UID添加到源流中,如下所示

// getting RR interval stream
DataStream<RRIntervalStreamEvent> rrIntervalStreamEventDataStream = envrionment.addSource(new RR_interval_Gen()).uid("RR interval stream");

// getting QRS interval stream

 DataStream<qrsIntervalStreamEvent> qrsIntervalStreamEventDataStream = envrionment.addSource(new Qrs_interval_Gen()).uid("qrs Interval stream");
// getting RR interval stream
DataStream<RRIntervalStreamEvent> rrIntervalStreamEventDataStream = envrionment.addSource(new RR_interval_Gen()).name("RR Interval stream");


System.out.println("getting transformation for stream 1 = " + rrIntervalStreamEventDataStream.getTransformation());
// getting QRS interval stream

DataStream<qrsIntervalStreamEvent> qrsIntervalStreamEventDataStream = envrionment.addSource(new Qrs_interval_Gen()).name("qrs Interval stream");

正如@alpinegizmo所建议的,我已经向源流添加了UID,如下所示

// getting RR interval stream
DataStream<RRIntervalStreamEvent> rrIntervalStreamEventDataStream = envrionment.addSource(new RR_interval_Gen()).uid("RR interval stream");

// getting QRS interval stream

 DataStream<qrsIntervalStreamEvent> qrsIntervalStreamEventDataStream = envrionment.addSource(new Qrs_interval_Gen()).uid("qrs Interval stream");
// getting RR interval stream
DataStream<RRIntervalStreamEvent> rrIntervalStreamEventDataStream = envrionment.addSource(new RR_interval_Gen()).name("RR Interval stream");


System.out.println("getting transformation for stream 1 = " + rrIntervalStreamEventDataStream.getTransformation());
// getting QRS interval stream

DataStream<qrsIntervalStreamEvent> qrsIntervalStreamEventDataStream = envrionment.addSource(new Qrs_interval_Gen()).name("qrs Interval stream");

通过使用
name()
而不是
uid()
解决了此问题,如下所示

// getting RR interval stream
DataStream<RRIntervalStreamEvent> rrIntervalStreamEventDataStream = envrionment.addSource(new RR_interval_Gen()).uid("RR interval stream");

// getting QRS interval stream

 DataStream<qrsIntervalStreamEvent> qrsIntervalStreamEventDataStream = envrionment.addSource(new Qrs_interval_Gen()).uid("qrs Interval stream");
// getting RR interval stream
DataStream<RRIntervalStreamEvent> rrIntervalStreamEventDataStream = envrionment.addSource(new RR_interval_Gen()).name("RR Interval stream");


System.out.println("getting transformation for stream 1 = " + rrIntervalStreamEventDataStream.getTransformation());
// getting QRS interval stream

DataStream<qrsIntervalStreamEvent> qrsIntervalStreamEventDataStream = envrionment.addSource(new Qrs_interval_Gen()).name("qrs Interval stream");
//获取RR间隔流
DataStream RRIntervalStreamMeventDataStream=environment.addSource(新的RR_interval_Gen()).name(“RR interval stream”);
System.out.println(“获取流1的转换=“+rrIntervalStreamEventDataStream.getTransformation());
//获取QRS间期流
DataStream qrsintervalstreameeventdatastream=environment.addSource(新Qrs\u interval\u Gen()).name(“Qrs interval stream”);
输出图如下所示


此问题通过使用
name()
而不是
uid()
解决,如下所示

// getting RR interval stream
DataStream<RRIntervalStreamEvent> rrIntervalStreamEventDataStream = envrionment.addSource(new RR_interval_Gen()).uid("RR interval stream");

// getting QRS interval stream

 DataStream<qrsIntervalStreamEvent> qrsIntervalStreamEventDataStream = envrionment.addSource(new Qrs_interval_Gen()).uid("qrs Interval stream");
// getting RR interval stream
DataStream<RRIntervalStreamEvent> rrIntervalStreamEventDataStream = envrionment.addSource(new RR_interval_Gen()).name("RR Interval stream");


System.out.println("getting transformation for stream 1 = " + rrIntervalStreamEventDataStream.getTransformation());
// getting QRS interval stream

DataStream<qrsIntervalStreamEvent> qrsIntervalStreamEventDataStream = envrionment.addSource(new Qrs_interval_Gen()).name("qrs Interval stream");
//获取RR间隔流
DataStream RRIntervalStreamMeventDataStream=environment.addSource(新的RR_interval_Gen()).name(“RR interval stream”);
System.out.println(“获取流1的转换=“+rrIntervalStreamEventDataStream.getTransformation());
//获取QRS间期流
DataStream qrsintervalstreameeventdatastream=environment.addSource(新Qrs\u interval\u Gen()).name(“Qrs interval stream”);
输出图如下所示