美文网首页
03-flink编程模型

03-flink编程模型

作者: 蜗牛写java | 来源:发表于2019-09-26 10:39 被阅读0次

    03-flink编程模型

    Flink编程接口

    根据数据类型分为两大类:

    1. 支持批计算的接口DataSet API
    2. 支持流计算的接口DataStream API

    同时flink将数据处理接口抽象成四层,由上往下分别为

    1. SQL API

      主要是学习成本低,能够快速上手

    2. Table API

      将内存中的DataStream和DateSet数据集在原有的基础上增加Schema信息,将数据类型统一抽象成表结构,然后通过Table API提供的接口处理对应的数据集

    3. DataStream/DataSet API

      面向开发用户,处理无界数据流和批量数据

    4. Stateful Stream Processing API

      stateful Stream最底层接口,用户可以使用Stateful Stream Process接口操作状态、时间等底层数据

    用户可以根据需求选择任意一层抽象接口来开发Flink引用

    四层抽象接口.png

    编程模型

    DataFlow模型.png
    1. 设置执行环境
    2. 创建数据源(可以多个数据源)
    3. 对数据进行不同方式的转换(算子)
    4. 指定数据去向(对结果的数据进行sink,可以输出到多个地方)
    //1.设定执行环境  
    final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.getConfig().setGlobalJobParameters(params);
    //2.创建数据源
    DataStream<String> text = env.readTextFile("file://path/file");
    //3.对数据进行不同方式的转换
    DataStream<Tuple2<String, Integer>> counts = text.flatMap(new Tokenizer()).keyBy(0).sum(1);
    //4.指定数据去向(例子中,打印到控制台也是一种数据去向)
    counts.print();
    //5.指定名称并触发流式任务(批处理不需要该步骤)
    env.execute("Streaming WordCount");
    
    Stream-DataFlow.png

    流分类

    1. one-to-one streams

      保持元素的分区和顺序

    2. redistributing streams

      改变流的分区

      重新分区策略取决于使用的算子

      如:keyBy()、broadcast()、rebalance

    Stream分类.png

    相关文章

      网友评论

          本文标题:03-flink编程模型

          本文链接:https://www.haomeiwen.com/subject/jaizectx.html