Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。
最大亮点是流处理,最适合的应用场景是低时延的数据处理。
场景:高并发pipeline处理数据,时延毫秒级,且兼具可靠性。
环境搭建:
①、安装flink
https://nightlies.apache.org/flink/flink-docs-master/zh/docs/try-flink/local_installation/
②、安装Netcat
Netcat(又称为NC)是一个计算机网络工具,它可以在两台计算机之间创建 TCP/IP 或 UDP 连接。
用于测试网络中的端口,发送文件等操纵。
举行网络调试和探测,也可以举行加密连接和长途管理等高级网络操纵
- yum install -y nc # 安装nc命令
- nc -lk 8888 # 启动socket端口
复制代码 无界流之读取socket文本流
一、依靠
二、SoketJob
- public class SocketJob{
-
- public static void main(String[] args)throws Exception{
-
- // 创建执行环境
- StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
- // 指定并行度,默认电脑线程数
- env.setParallelism(3);
- // 读取数据socket文本流 指定监听 IP 端口 只有在接收到数据才会执行任务
- DataStreamSource<String> socketDS = env.socketTextStream("172.24.4.193", 8888);
- // 处理数据: 切换、转换、分组、聚合 得到统计结果
- SingleOutputStreamOperator<Tuple2<String, Integer>> sum = socketDS
- .flatMap(
- (String value, Collector<Tuple2<String, Integer>> out) -> {
- String[] words = value.split(" ");
- for (String word : words) {
- out.collect(Tuple2.of(word, 1));
- }
- }
- )
- .setParallelism(2)
- // // 显式地提供类型信息:对于flatMap传入Lambda表达式,系统只能推断出返回的是Tuple2类型,而无法得到Tuple2<String, Long>。只有显式设置系统当前返回类型,才能正确解析出完整数据
- .returns(new TypeHint<Tuple2<String, Integer>>() {
- })
- // .returns(Types.TUPLE(Types.STRING,Types.INT))
- .keyBy(value -> value.f0)
- .sum(1);
- // 输出
- sum.print();
- // 执行
- env.execute();
- }
- }
复制代码 测试:
启动socket流:
本地执行:直接ideal启动main步伐,在socket流中输入
- abc bcd cde
- bcd cde fgh
- cde fgh hij
复制代码
集群执行:
执行maven打包,将打包的jar上传到集群中
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |