Flink的官方SocketWindowWordCount单词计数demo体验

2 篇文章 0 订阅

本人刚刚接触Flink,顺着官方文档,和各路大神的指引,自己也试着搭建起来一个Flink的SocketWindowWordCount单词计数的Demo,体验一下,找找手感,主要是做一个记录。

一.环境搭建

1.下载Flink的压缩包flink-1.11.1-bin-scala_2.11.tgz,地址为https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.11.tgz

2.操作系统为CentOS6,jdk1.8

3.上传jar包到linux中,tar -zxvf flink-1.11.1-bin-scala_2.11.tgz,会得到一个flink-1.11.1

启动flink,jps查看是否成功

成功后打开浏览器访问ip:8081地址看到如下画面

二.SocketWindowWordCount单词计数Demo的体验

1.nc -lk 9999

一定要先进行这一步,不然会报错端口冲突的

2.启动demo的jar bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9999

成功后可以看到job里面有了,也可以去浏览器查看

3.在nc -lk 9999那条命令下面随便输入几个单词

4.tailf flink-root-taskexecutor-0-localhost.localdomain.out 查看日志

可以看到有输出结果了,说明flink运行正常了!

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flink可以通过使用SetState来实现历史全量去重计数。具体实现步骤如下: 1.定义一个MapState作为状态,用于存储历史数据的去重结果。 ``` MapState<String, Long> countState = getRuntimeContext().getMapState(new MapStateDescriptor<>("countState", String.class, Long.class)); ``` 2.在KeyedProcessFunction的processElement方法中,判断当前数据是否已经存在于状态中,如果不存在则将其加入状态,并将计数器加1。 ``` @Override public void processElement(T value, Context ctx, Collector<Long> out) throws Exception { //获取当前事件的key和value String key = ctx.getCurrentKey(); Long currentValue = value.get(); //如果当前事件不存在于状态中,就将其加入状态并将计数器加1 if (!countState.contains(currentValue.toString())) { countState.put(currentValue.toString(), 1L); out.collect(countState.values().iterator().next()); } } ``` 3.在Job中设置状态后端,并启动Job。 ``` StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStateBackend(new RocksDBStateBackend("hdfs://localhost:9000/flink/checkpoints")); DataStream<Tuple2<String, Long>> input = env.fromElements( Tuple2.of("key", 1L), Tuple2.of("key", 1L), Tuple2.of("key", 2L), Tuple2.of("key", 3L), Tuple2.of("key", 2L), Tuple2.of("key", 4L), Tuple2.of("key", 5L), Tuple2.of("key", 3L) ); input.keyBy(0) .process(new CountDistinct()) .print(); env.execute(); ``` 这样就可以实现历史全量去重计数了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值