流处理基础案例

52 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天 juejin.cn/post/716729…

依赖

version:1.11.1
flink-java 
flink-streaming-java_2.12
flink-clients_2.12
log4j:version:1.7.10
slf4j-api
slf4j-log4j12

基本步骤

1:获得一个执行环境

2:加载/创建 初始化数据

3:指定操作数据的transaction算子

4:指定数据目的地

5:调用execute()触发执行程序

Flink是延迟计算,只有在调用execute()方法时才会触发

wordCount

所有的大数据框架学习都是从wordcount开始,可以说与语言学习的Helloworld类似

核心逻辑:

//获取执行环境
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
//连接bigdata04 9001端口获取socket数据
DataStreamSource<String> text = env.socketTextStream("bigdata04", 9001);
        //处理数据
SingleOutputStreamOperator<Tuple2<String, Integer>> wordCount = text.flatMap(new FlatMapFunction<String, String>() {
    public void flatMap(String line, Collector<String> out) throws Exception {
        String[] words = line.split(" ");
        for (String word : words) {
            out.collect(word);
        }
    }
}).map(new MapFunction<String, Tuple2<String, Integer>>() {
    public Tuple2<String, Integer> map(String word) throws Exception {
        return new Tuple2<String, Integer>(word, 1);
    }
}).keyBy(new KeySelector<Tuple2<String, Integer>, String>() {
    public String getKey(Tuple2<String, Integer> tup) throws Exception {
        return tup.f0;
    }
})//.keyBy(0)
        .timeWindow(Time.seconds(2))
        .sum(1);
​
//使用一个线程执行打印操作
wordCount.print().setParallelism(1);
​
//执行程序
env.execute("SocketWindowWordCountJava");
​
​
//执行结果打印
hello 2 
me 1 
you 1

以上就是wordcount的一个基本案例