我只想给运营商和来源命名。我们来举个例子
这是执行计划的屏幕截图,我采用了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}
答案 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的
以下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");
输出图如下所示