Apache flink 使用Flink中的计数器获取NumofRecords

Apache flink 使用Flink中的计数器获取NumofRecords,apache-flink,flink-streaming,flink-cep,Apache Flink,Flink Streaming,Flink Cep,我想为Flink中的一个运营商展示numRecordsIn,为此,我一直在关注数据工匠的ppt。计数器代码如下所示 public static class mapper extends RichMapFunction<String,String>{ public Counter counter; @Override public void open(Configuration parameters) throws Exceptio

我想为Flink中的一个运营商展示numRecordsIn,为此,我一直在关注数据工匠的ppt。计数器代码如下所示

public static   class mapper extends  RichMapFunction<String,String>{

        public   Counter counter;

        @Override
    public void open(Configuration parameters) throws Exception {
        super.open(parameters);

        this.counter = getRuntimeContext()
                .getMetricGroup()
                .counter("numRecordsIn");
    }


    @Override
    public String map(String s) throws Exception {
        counter.inc();
        System.out.println("counter val " + counter.toString());
        return null;
    }
}
公共静态类映射器扩展了RichMapFunction{
公众柜台;
@凌驾
公共void open(配置参数)引发异常{
super.open(参数);
this.counter=getRuntimeContext()
.getMetricGroup()
.计数器(“numRecordsIn”);
}
@凌驾
公共字符串映射(字符串s)引发异常{
counter.inc();
System.out.println(“counter val”+counter.toString());
返回null;
}
}

问题是,如何指定要显示的运算符?

公制计数器通过Flink的公制系统公开。为了查看它们,您必须配置度量报告器。可以找到如何注册度量报告器的说明。

Flink包括许多内置度量,包括numRecordsIn。所以,如果这就是您想要度量的,那么就不需要编写任何代码来实现特定的度量。同样,NumRecordsInsperSecond和许多其他人也是如此

您询问的代码导致使用度量的运算符的numRecordsIn计数器递增

更好地理解度量系统的一个好方法是打开一个简单的流作业,并查看Flink的web ui中的度量。我还发现在作业运行时查询监控RESTAPI非常有用