探索flink计数功能,欢迎指正!!
使用场景:需要对经过算子处理后的DataStream中不同类型的数据进行全局统计个数(正解见第三种)
1.Metric
参考地址:https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/metrics.html#datadog-orgapacheflinkmetricsdatadogdatadoghttpreporter
flink提供了一套指标,既可以定义自己的,也可以获取官方的,获取官方的指标(需要配置report以log的方式输出,怎么在程序中获取没有研究明白)。定义自己指标的方式:
public class MyMapper extends RichMapFunction<String, String> {
private transient Counter counter;
@Override
public void open(Configuration config) {
this.counter = getRuntimeContext()
.getMetricGroup()
.counter("myCounter");
}
@Override
public String map(String value) throws Exception {
this.counter.inc();
return value;
}
}
inc代表增1,dec代表减1,但是这里的统计值是针对一个task的,也就是说统计值并不是全局的数值,不满足场景需求。换句话说如果我的一个job开启了3个task&#