【尚硅谷Java版】Flink快速上手之无界流处理

【尚硅谷Java版】Flink快速上手之无界流处理

一、项目环境搭建

项目环境搭建我这里不做过多的赘述,直接参考我之前的博客里面的环境搭建完成搭建就可以了。
地址:https://blog.csdn.net/junR_980218/article/details/125366210

二、项目编写

1、编写StreamWordCount类,并添加如下内容

package com.atguigu.wc;

import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.KeyedStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;

/**
 * @author 
 * @date 2022/6/20 15:15
 */
public class StreamWordCount {
    public static void main(String[] args) throws Exception {
        //1、创建流式执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        // 等同于下面第二步 第二步是将主机名和端口号写在上面,这里是从参数中提取主机名和端口号
        //ParameterTool 是Flink从当前main方法中提取参数的一个工具
        ParameterTool parameterTool = ParameterTool.fromArgs(args);
        String hostname=parameterTool.get("host");
        Integer port=parameterTool.getInt("port");

        //2、读取文本流
        DataStreamSource<String> stringDataStreamSource = env.socketTextStream("DESKTOP-FIND8C3",9000);
        //3、转换计算
        SingleOutputStreamOperator<Tuple2<String, Long>> wordAndOneTuple = stringDataStreamSource.flatMap((String line, Collector<Tuple2<String, Long>> out) ->
        {
            String[] words = line.split(" ");
            for (String word : words) {
                out.collect(Tuple2.of(word, 1L));
            }
        }).returns(Types.TUPLE(Types.STRING, Types.LONG));
        //4、分组
        KeyedStream<Tuple2<String, Long>, String> wordAndOneKeyStream = wordAndOneTuple.keyBy(data -> data.f0);
        //5、求和
        SingleOutputStreamOperator<Tuple2<String, Long>> sum = wordAndOneKeyStream.sum(1);
        //6、打印输出
        sum.print();
        //7、自动执行
        env.execute();

    }
}

对于此段代码的第二个步骤 //2、读取文本流,上面是直接将主机名和端口号固定了,我们也可以通过下面的操作不固定主机名和端口号

  1. 将上面\\2、读取文本流 全部代码换成下面的
  //ParameterTool 是Flink从当前main方法中提取参数的一个工具
        ParameterTool parameterTool = ParameterTool.fromArgs(args);
        String hostname=parameterTool.get("host");
        Integer port=parameterTool.getInt("port");
        DataStreamSource<String> stringDataStreamSource = env.socketTextStream(hostname,port);

2.去配置一下配置项,才可以实现不将主机名和端口号固定的操作

在这里插入图片描述

在这里插入图片描述

三、测试

因为是无界流处理,所以需要来一条数据处理一条数据,我们通过netcat工具来实现这个交互,具体Windows安装下载netcat的过程可以参考:https://blog.csdn.net/junR_980218/article/details/125374526
然后输入数据来验证
在这里插入图片描述
至此,Flink快速上手之无界流处理就到此结束了~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷大数据之Flink(Scala)文档是一份详细介绍Flink框架的文档。Flink是一种用于处理和批处理的分布式数据处理引擎,可以实时且高效地处理大规模数据。该文档以Scala语言为基础,介绍了Flink在实时处理、窗口计算、水印机制、状态管理、故障恢复等方面的重要概念和使用方法。 文档首先介绍了Flink的基本概念和架构,包括数据和任务图的概念,以及Flink的分布式部署模式。然后,文档详细介绍了Flink的核心功能和特性,如事件时间处理、窗口计算、状态管理等。 在事件时间处理方面,文档介绍了Flink如何处理式数据中的事件时间,并解释了水印机制的原理和使用方法。水印机制能够确保事件在处理中的有序性和准确性,提高了数据处理的可靠性。 窗口计算是Flink的一个重要功能,文档详细介绍了滚动窗口、滑动窗口和会话窗口等不同类型的窗口,并给出了相应的示例代码,帮助读者理解窗口计算的概念和使用方式。 此外,文档还介绍了Flink的状态管理和故障恢复机制。Flink通过内部状态存储机制来维护处理中的状态信息,并提供了容错机制来处理节点故障和故障恢复。 最后,文档提供了大量的实例代码和案例分析,帮助读者更好地理解和应用Flink框架。读者可以通过这些示例代码来学习和实践Flink的各种功能和特性。 总之,尚硅谷大数据之Flink(Scala)文档是一份全面而详细的Flink框架学习资料,对于想要深入了解和使用Flink的开发者来说是一份非常有价值的文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值