跟我们一起
玩转路由器

2021年最新最全Flink系列教程__Flink高级API(四)

今日目标是深入了解flink的高级api,包括flink的四大基石、窗口操作、时间和水印机制以及状态管理。本文将详细介绍这些关键概念和相关操作,帮助你掌握flink的核心功能。

Flink的四大基石

Flink的四大基石包括:

  1. Checkpoint – 检查点:用于实现分布式一致性,解决数据丢失问题,支持故障恢复。检查点存储的是全局状态,并持久化在HDFS分布式文件系统中。

  2. State – 状态:分为托管状态(Managed State)和原始状态(Raw State)。从数据结构的角度来看,托管状态包括ValueState、ListState、MapState和BroadcastState。

  3. Time – 时间:分为事件时间(EventTime)、摄取时间(IngestionTime)和处理时间(ProcessTime)。

  4. Window – 窗口:用于将无界数据转换为有界数据,支持时间窗口和计数窗口,包括滚动窗口(Tumbling Window)、滑动窗口(Sliding Window)和会话窗口(Session Window)。

窗口操作

窗口操作是Flink处理流数据的关键功能之一。窗口的作用是将动态、无界的数据划定范围,转换为有界、静态的数据进行计算。

为什么需要窗口?

  • 数据是动态的、无界的,需要窗口来划定范围,将无界数据转换成有界、静态的数据进行计算。

窗口分类:

  • 时间窗口(Time Window):基于时间进行分类,常见的窗口级别包括一天、一小时、一分钟等。

    • 滚动窗口(Tumbling Window):窗口时间和滑动时间相同。
    • 滑动窗口(Sliding Window):滑动时间小于窗口时间,窗口会重叠。
    • 会话窗口(Session Window):基于会话进行分类。
  • 计数窗口(Count Window):基于计数进行分类。

    • 滚动计数窗口:每达到一定数量进行统计。
    • 滑动计数窗口:每达到一定数量进行统计,但窗口会重叠。

如何使用窗口?

时间窗口案例:

  • 需求1:每5秒钟统计一次,最近5秒钟内,各个路口通过红绿灯汽车的数量(基于时间的滚动窗口)。

  • 需求2:每5秒钟统计一次,最近10秒钟内,各个路口通过红绿灯汽车的数量(基于时间的滑动窗口)。

}

计数窗口案例:

  • 需求1:统计在最近5条消息中,各自路口通过的汽车数量,相同的key每出现5次进行统计(基于数量的滚动窗口)。

  • 需求2:统计在最近5条消息中,各自路口通过的汽车数量,相同的key每出现3次进行统计(基于数量的滑动窗口)。

}

Flink时间 – Time 和水印 – Watermark

时间(Time)

水印机制(Watermark)

水印机制主要用于解决数据延迟和数据乱序问题。水印(时间戳)等于事件时间减去允许的最大延迟时间。窗口触发的条件是水印时间大于等于窗口的结束时间。

需求

有订单数据,格式为:(订单ID,用户ID,时间戳/事件时间,订单金额)。要求每隔5秒计算5秒内每个用户的订单总金额,并添加Watermark来解决一定程度上的数据延迟和数据乱序(最多延时3秒)问题。

}

自定义重写接口实现水印机制

}

Flink状态管理

状态是基于key或操作算子的中间结果。Flink的状态分为两种:托管状态(Managed State)和原始状态(Raw State)。托管状态又分为基于key的状态(Keyed State)和基于操作的状态(Operator State)。

Keyed State支持的数据结构包括:

  • ValueState
  • ListState
  • MapState
  • BroadcastState

Operator State支持的数据结构包括:

  • 字节数组
  • ListState

Flink Keyed State 案例

Flink Operator State 案例

通过以上详细介绍和代码示例,你应该能够更好地理解和应用Flink的高级API,掌握窗口操作、时间和水印机制以及状态管理等关键概念。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《2021年最新最全Flink系列教程__Flink高级API(四)》
文章链接:https://www.lu-you.com/settings/26831.html
本站资源来源于互联网整理,若有图片影像侵权,联系邮箱429682998@qq.com删除,谢谢。

评论 抢沙发

登录

找回密码

注册