flink api 简介

1.1 不同级别的抽象

在这里插入图片描述

  • Flink API 最底层的抽象为有状态实时流处理。其抽象实现是 Process Function,并且 Process Function 被 Flink 框架集成到了 DataStream API 中来为我们使用。自由度最高,从而允许程序可以实现复杂计算。

  • Flink API 第二层抽象是 Core APIs。Core APIs 提供的流式 API(Fluent API)为数据处理提供了通用的模块组件,例如各种形式的用户自定义转换(transformations)、联接(joins)、聚合(aggregations)、窗口(windows)和状态(state)操作等。此层 API 中处理的数据类型在每种编程语言中都有其对应的类。

  • Flink API 第三层抽象是 Table API。Table API 是以表(Table)为中心的声明式编程(DSL)API,例如在流式数据场景下,它可以表示一张正在动态改变的表。
    表和 DataStream/DataSet 可以进行无缝切换,Flink 允许用户在编写应用程序时将 Table API 与 DataStream/DataSet API 混合使用。

  • Flink API 最顶层抽象是 SQL。这层抽象在语义和程序表达式上都类似于 Table API,但是其程序实现都是 SQL 查询表达式。SQL 抽象与 Table API 抽象之间的关联是非常紧密的,并且 SQL 查询语句可以在 Table API 中定义的表上执行。

1.2 常用DataStream API

flink-demo

1.2.1 Map

DataStream → DataStream
在这里插入图片描述

1.2.2 Filter

DataStream → DataStream
在这里插入图片描述

1.2.3 Flatmap

DataStream → DataStream
在这里插入图片描述

1.2.4 KeyBy

DataStream → KeyedStream
在这里插入图片描述

1.2.5 Reduce/Aggregations

KeyedStream → DataStream
在这里插入图片描述

1.2.6 union

DataStream* → DataStream
在这里插入图片描述

1.2.7 旁路输出

DataStream → DataStream*
在这里插入图片描述

1.2.8 window/WindowAll

  • KeyedStream → WindowedStream

  • DataStream → AllWindowedStream

Sliding Windows滑动窗口(time/count):

  • 每次滑动window slide的距离, 并获取window size范围内的数据进行处理
    在这里插入图片描述

Tumbling Windows滚动窗口(time/count): (滚动窗口是window size = widow slide的滑动窗口)

  • 每次获取window size范围内的数据进行处理
    在这里插入图片描述

1.2.8 Window有序消费

  • 场景: Window基于 EventTime 统计, 需要既实时统计, 又需要保障数据准确性

  • 问题: Window基于 EventTime 而不是 OperateTime 计算时, Flink会丢弃延时数据

Watermark(水印):

  • 缺点: 降低吞吐量(缓存历史窗口数据), 仅能处理允许延时范围内的数据, 迟到严重数据依然会被丢弃

  • 窗口按 EventTime 计算后, 划分每个窗口开始,结束时间点; 按读取到消息被标记上的Watermark判断是否超过结束时间点触发统计

  • Watermark 标记规则: 例: 窗口结束时间-2秒 -> 允许消息延迟2秒

Allowed Lateness(允许迟到机制):

  • 将延迟过于严重的数据输出到侧输出流, 侧输出流存储或进行特殊处理

1.2.9 RichAsyncFunction(外部数据访问的异步 I/O)

在这里插入图片描述

实现数据库(或键/值存储)的异步 I/O 交互需要支持异步请求的数据库客户端。许多主流数据库都提供了这样的客户端。
如果没有这样的客户端,可以通过创建多个客户端并使用线程池处理同步调用的方法,将同步客户端转换为有限并发的客户端。
然而,这种方法通常比正规的异步客户端效率低。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值