一种错误的实现方式:这个下面就是一种错误的实现方式,首先定义数据源,其中有五个单词,然后进行数据处理,map里面实现了RichMapFunction接口,重写map方法,先定义一个计数器counter为0,每读一个单词,counter加一,就把这个单词变为counter进行输出,这里设置的并行度为1,输出结果是1,2,3,4,5
但是当我们将并行度设置为2的时候,输出变成了1,2,3,1,2 其实很好理解,就是Integer counter = 0;这句话我们执行了两次,因为并行度为2,导致我们最后是不同的并行度有不同的counter进行计数的!所以这样就不行
public class JavaCountApp {
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSource<String> data = env.fromElements("flink", "hadoop", "spark", "storm", "linux");
data.map(new RichMapFunction<String, Integer>() {
Integer counter = 0;
@Override
public Integer map(String value) throws Exception {
counter++;
return counter;