0
点赞
收藏
分享

微信扫一扫

Apache Flink(未完待续)

老北京的热干面 2022-01-05 阅读 79

Apache Flink

流计算

本质:让数据产生价值

Flink应用场景

事件驱动型应用
  • 定义:

事件驱动型应用是一类具有状态的应用,改应用会根据事件流中的事件触发计算、更新状态或进行外部系统操作。常见于实时计算业务

  • 架构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ayBEorID-1641371103457)(…/image/image-20220105093204092.png)]

  • 两种架构运用起来的区别:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cgVn6rza-1641371103459)(…/image/image-20220105093400176.png)]

实际的开发中,情况可能更复杂,数据可能迟到,对于这种迟到的数据应该怎么办

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NdbUVLIe-1641371103459)(…/image/image-20220105103001944.png)]

  • API语法:

SQL:HOP(time_attr,hop_interval,size_interval)

Table:Slide.over(interval(…)).every(interval(…)).on(…).as(…)

示例-窗口大小1小时,滑动步长15分钟:

HOP(ts,INTERVAL ‘15’ MINUTE,INTERVAL ‘1’ HOUR)

  • Flink为什么需要窗口

我们知道流式数据集是没有边界的,数据会源源不断的发送到我们的系统中。

流式计算最终的目的是去统计数据产生汇总结果的,而在无界数据集上,如果做一个全局的窗口统计,是不现实的。

只有去划定一定大小的窗口范围去做计算,才能最终汇总到下游的系统中,用来分析和展示。

  • 经典的数据传输过程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4kL3HWGF-1641371103460)(…/image/image-20220105105830434.png)]

中间OPs就是具体的业务逻辑,WATERMARK FOR ts AS ts -INTERVAL '5' SECOND --数据迟到5s依然不会影响结果的准确性

  • Flink机制保障

事件驱动型应用是一类具有状态的应用,该应用会根据事件流中的事件触发计算、更新状态进行外部系统操作

数据分析型应用
疫情防控分析

近14天新增报告本地感染确诊病例100例以上;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HGxEuBRw-1641371103461)(…/image/image-20220105143020527.png)]

近14天,疫情的防控需要的是实时性,一天出一个结果显然是不够现实的,可能需要每一条数据都要追溯14天的结果

然而HOP Window是不支持这种场景的

需要用到Over Window 传统数据库的开窗函数

OVER Window 目前支持有如下三个元素组合的8种数据类型:

  • 时间 Processing Time、EventTime
  • 数据集 Bounded 和 UnBounded
  • 划分方式 ROWS 和 RANGE
语法

SELECT

​ agg1(col1) OVER(

[PARTITION BY(value_expression1,…,value_expressionN)]

ORDER BY timeCol

RANGE BETWEEN(UNBOUNDED | timeinterval)PRECEDING AND CURRENT ROW) AS colName,…)

FROM TAB1

示例

SELECT

​ SUM(count) OVER(

​ PARTITION By city

​ ORDER BY ts

​ RANGE BETWEEN INTERVAL ‘14’ DAY PRECEDING AND CURRENT ROW)

FROM T1

数据管道&ETL型应用

Flink优势特点

友好的APIS
优秀的性能
高可靠的正确性
海量数据的计算
灵活边界的运维

Flink组件栈

部署层
Runtime层
优化层
API层
语言层
扩展库

Flink环境准备

环境依赖要求
IDE和开发配置
Hello Flink 环境验证
举报

相关推荐

0 条评论