计数器:
基于flink开发计数器的三步:
step1:定义计数器
LongCounter counter = new LongCounter();
step2:注册计数器:
getRuntimeContext().addAccumulator("ele-counts-java", counter);
step3:获取计数器
long num = jobResult.getAccumulatorResult("ele-counts-java");
示例:
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSource<String> data = env.fromElements("hadoop","spark","flink","pyspark","storm");
DataSet<String> info = data.map(new RichMapFunction<String, String>() {
//step1:定义计数器
LongCounter counter = new LongCounter();
@Override
public void open(Configuration parameters) throws Exception {
super.open(parameters);
//step2:注册计数器
getRuntimeContext().addAccumulator("ele-counts-java", counter);
}
public String map(String value) throws Exception {
counter.add(1);
return value;
}
});
String filePath = "D:\\yly\\BaiduNetdiskDownload\\最全最新flink教程\\000.代码+环境\\00.flink-train-master\\flink-train\\data\\04\\inputs1\\";
info.writeAsText(filePath, FileSystem.WriteMode.OVERWRITE).setParallelism(2);
JobExecutionResult jobResult = env.execute("CounterApp");
// step3: 获取计数器
long num = jobResult.getAccumulatorResult("ele-counts-java");
System.out.println("num = [" + num + "]");
}