AccumulatorTest.java
package com.xxxxx.flink.batch;
import org.apache.flink.api.common.JobExecutionResult;
import org.apache.flink.api.common.accumulators.IntCounter;
import org.apache.flink.api.common.functions.RichMapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.MapOperator;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.core.fs.FileSystem;
import scala.Int;
public class AccumulatorTest {
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<String> text = env.readTextFile("data/textFile");
MapOperator<String, String> sxt = text.map(new RichMapFunction<String, String>() {
IntCounter intCounter = new IntCounter();
@Override
public void open(Configuration parameters) throws Exception {
getRuntimeContext().addAccumulator("my-accumulator", intCounter);
}
@Override
public String map(String value) throws Exception {
if (value.contains("abc")) {
intCounter.add(1);
}
return value;
}
});
sxt.writeAsText("data/my.txt", FileSystem.WriteMode.OVERWRITE);
JobExecutionResult counter = env.execute("counter");
Integer result = counter.getAccumulatorResult("my-accumulator");
System.out.println( result);
}
}
textfile
hello aaabc
hello bbabc
hello ccbac
hello cccab
xixi huhu