跳至主要內容

Flink基本使用

xw小于 1 分钟大数据JAVAFlink

概述

Flink是一个基于流的数据处理引擎,主要过程包括数据的来源、转换、结果存储。

  • 来源
  • 元素集合
    • env.fromElements
    • env.fromColletion
    • env.fromSequence(start,end);
  • 文件
    • env.readTextFile(本地文件);
    • env.readTextFile(HDFS文件);
  • socket
    • env.socketTextStream("ip", 5555)
  • 自定义Source
    • 并行度为1
      • SourceFunction
      • RichSourceFunction
    • 并行度大于1
      • ParallelSourceFunction
      • RichParallelSourceFunction
  • 与其他第三方系统connect对接,如kafka,es等

第一个Demo

public static void main(String [] args) throws Exception {

        //构建执行任务环境以及任务的启动的入口, 存储全局相关的参数
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);

        //设置并行度
        //env.setParallelism(1);

        //相同类型元素的数据流 source
        DataStream<String> stringDS = env.fromElements("java,SpringBoot", "spring cloud,redis", "kafka,小滴课堂");

        stringDS.print("处理前");


        // FlatMapFunction<String, String>, key是输入类型,value是Collector响应的收集的类型,看源码注释,也是 DataStream<String>里面泛型类型
        DataStream<String> flatMapDS = stringDS.flatMap(new FlatMapFunction<String, String>() {
            @Override
            public void flatMap(String value, Collector<String> collector) throws Exception {

                String [] arr =  value.split(",");
                for(String str : arr){
                    collector.collect(str);
                }
            }
        });

        //输出 sink
        flatMapDS.print("处理后");

        //DataStream需要调用execute,可以取个名称
        env.execute("flat map job");
    }