Flink 1.18.1的基本使用

系统示例应用
yum -y install nc
nc -l 9010
asd asd sdfsf sdf sdfsdagd sdf
/usr/local/flink-1.18.1/bin/flink run /usr/local/flink-1.18.1/examples/streaming/SocketWindowWordCount.jar --port 9010

在这里插入图片描述

在这里插入图片描述


单次统计示例工程
cd C:\Dev\IdeaProjects


mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.18.1
 Define value for property 'groupId':
 Define value for property 'artifactId':
 Define value for property 'version' 1.0-SNAPSHOT: :
 Define value for property 'package' : :

 com.edu
 flink-example
 1.0.0
 com.edu.flink
package com.edu.flink;

import org.apache.flink.api.common.eventtime.WatermarkStrategy;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.TimeCharacteristic;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.util.Collector;

import java.time.Duration;


public class WindowWordCount {

    public static void main(String[] args) throws Exception {
        //设置运行时环境
        StreamExecutionEnvironment env =
                StreamExecutionEnvironment.getExecutionEnvironment();

        //设置输入流,并执行数据流的处理和转换
        env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime);
        DataStream<Tuple2<String, Integer>> dataStream = env
                .socketTextStream("192.168.18.128", 9000)
                .flatMap(new Splitter())
                .keyBy(0)
                .timeWindow(Time.seconds(5))
                .sum(1);
        dataStream.assignTimestampsAndWatermarks(
                WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofSeconds(3))
        );

        //设置输出流
        dataStream.print();
        //执行程序
        env.execute("Window WordCount");
        System.out.print("finished...");
    }

    public static class Splitter implements FlatMapFunction<String, Tuple2<String,
            Integer>> {
        @Override
        public void flatMap(String sentence, Collector<Tuple2<String, Integer>> out)
                throws Exception {
            for (String word : sentence.split(" ")) {
                out.collect(new Tuple2<String, Integer>(word, 1));
            }
        }
    }

}

在这里插入图片描述

在这里插入图片描述

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flink是一个开源的流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行各种数据处理任务,包括流处理、批处理、图形处理等。Flink基本概念包括以下几个方面: 1. 数据流(DataStream):Flink中的数据处理都是基于数据流的,数据流是一组有序的数据记录,可以是无限的,也可以是有限的。Flink的数据流可以是无界的(即无限的数据流),也可以是有界的(即有限的数据集合)。 2. 窗口(Window):窗口是将无限的数据流划分为有限的数据集合,以便对数据进行有限的处理。Flink支持基于时间和基于数量的窗口,可以根据窗口的大小和滑动间隔来定义窗口。 3. 状态(State):状态是指在数据流处理过程中需要保存的中间结果,例如计数器、累加器等。Flink提供了不同类型的状态,包括键控状态(Keyed State)和操作符状态(Operator State)。 4. 并行度(Parallelism):并行度是指在Flink中执行数据处理任务的并行度,即同时处理数据的任务数。Flink支持动态调整并行度,可以根据数据流的负载情况来自动调整并行度。 5. 检查点(Checkpoint):检查点是指在Flink中对数据流进行快照的机制,以便在发生故障时能够恢复数据流的状态。Flink支持异步和同步的检查点机制,可以根据应用程序的需求来选择不同的检查点机制。 6. 时间语义(Time Semantics):时间语义是指在Flink中处理数据流时所使用的时间概念,包括事件时间(Event Time)、处理时间(Processing Time)和摄取时间(Ingestion Time)。 7. 数据源(Source)和数据汇(Sink):数据源是指Flink中用于读取数据的组件,数据汇是指Flink中用于写入数据的组件。Flink支持各种类型的数据源和数据汇,包括文件系统、消息队列、数据库等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值