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

在这里插入图片描述

编程模型

在这里插入图片描述

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

在这里插入图片描述

流分类

  1. one-to-one streams

    保持元素的分区和顺序

  2. redistributing streams

    改变流的分区

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

    如:keyBy()、broadcast()、rebalance

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值