首页 文章

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

提问于
浏览
0

我只想给运营商和消息来源命名 . 我们来举个例子吧

enter image description here

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

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

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

我还有另一个问题,那就是当我为CEP制作模式时,执行计划UI只是将其显示为模式 . 是否有任何方式显示该模式是什么样的 A B+ C? D . 如果我们有多个模式,我们应该能够命名为 Patterns{1..n}

3 回答

  • 2

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

  • 0

    正如@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());
    
  • 0

    通过使用 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

相关问题