【问题标题】:Naming operators, sources, sinks and patterns to be shown in Flink Execution Plan UI在 Flink 执行计划 UI 中显示的命名运算符、源、接收器和模式
【发布时间】:2017-10-26 20:17:55
【问题描述】:
我只想为运营商和消息来源命名。举个例子吧
这是执行计划的截图,我从 Flink Dashboard 获取。在这里,我有 2 个 DataStreams 来源,然后我加入了它们。我的问题是,我可以将这些来源命名为 EcgStream 和 Sp02 Stream 例如并加入为 Join1?
我问这个问题的原因是因为它使可视化更容易。另外,当我浏览 Opsclarity page 时,在页面末尾,他们提到了以下内容
注意 task_name 和 operator_name 已经被压缩,所以我们可以
延迟时间仍能正确区分任务和算子
跨任务和操作员聚合。但是这些压缩的名字会
与 Flink UI 中看到的不匹配,这将显示一个片段
Scala 代码作为运算符名称。 如果您需要这些名称
在公制中有意义,您应该在 Flink 中提供名称
您的应用程序代码。这个压缩值只发生在那些
非常长的默认名称,否则不会是合法指标
价值观。
我还有另一个问题,那就是当我为 CEP 制作一个模式时,执行计划 UI 只是将它显示为一个模式。有什么方法可以显示那种模式是什么A B+ C? D 。此外,如果我们有多个模式,我们应该能够将其命名为 Patterns{1..n}
【问题讨论】:
标签:
apache-flink
flink-streaming
flink-cep
【解决方案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");
输出图如下所示
【解决方案3】:
根据@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");
但是执行图不显示这些uid的
下面sout的结果也是3
System.out.println("id for stream 1 is " + stream1.getId());