Flink实现计数器

一种错误的实现方式:这个下面就是一种错误的实现方式,首先定义数据源,其中有五个单词,然后进行数据处理,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;
            
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值