03-flink编程模型

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引用

03-flink编程模型_第1张图片

编程模型

03-flink编程模型_第2张图片

  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");

03-flink编程模型_第3张图片

流分类

  1. one-to-one streams

    保持元素的分区和顺序

  2. redistributing streams

    改变流的分区

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

    如:keyBy()、broadcast()、rebalance

03-flink编程模型_第4张图片

你可能感兴趣的:(flink)