命名运算符,源,接收器和模式将显示在Flink执行计划UI中

时间:2017-10-26 20:17:55

标签: apache-flink flink-streaming flink-cep

我只想给运营商和来源命名。我们来举个例子

enter image description here

这是执行计划的屏幕截图,我采用了Flink Dashboard。这里我有2个DataStreams源,然后我加入它们。我的问题是,我可以将这些来源命名为 EcgStream Sp02 Stream ,并加入 Join1

我问这个问题的原因是因为它使得可视化变得更容易。另外,正如我在Opsclarity页面上所做的那样,在页面的最后,他们提到了以下内容

  

请注意,task_name和operator_name已经过压缩,因此我们可以   当延迟时,仍然可以正确区分任务和运算符   跨任务和运营商聚合。但这些压缩名称会   与Flink UI中看不到的内容相符,后者将显示片段   Scala代码作为运算符名称。 如果您需要这些名称   在度量系统中有意义的是,您应该在Flink中提供名称   您的应用程序代码。此压缩值仅适用于那些   非常长的默认名称,否则将不是合法的指标   值。

我还有另一个问题,那就是当我为CEP制作模式时,执行计划UI只是将其显示为模式。有没有什么方法可以显示那种模式是什么? A B + C? D 。如果我们有多种模式,我们应该能够命名而不是模式{1..n}

3 个答案:

答案 0 :(得分:2)

要为运营商分配更好的名称,请参阅the documentation。这是你应该做的事情,不仅因为它使执行计划更具可读性,而且因为它会使你的保存点在应用程序发展时更加强大可恢复(docs)。

答案 1 :(得分:1)

根据@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");

但执行Graph不会显示这些uid的

enter image description here

以下sout的结果也是3

  System.out.println("id for stream 1 is " + stream1.getId());

答案 2 :(得分:1)

使用name()代替uid()解决了此问题,如下所示

// 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");

输出图如下所示

enter image description here