流的基本概念
Streaming 101与Streaming 102原文网页
文章目录
- 流的基本概念
- 术语
- 什么是流
- 无界数据
- 无界数据处理
- 有界数据
- 批处理引擎
- 流引擎
- 低延迟、近似、推测结果
- 正确性
- 时间推理工具
- 数据处理模式
- 使用经典批处理引擎进行有界数据处理
- 用经典批处理引擎通过临时固定窗口进行无界数据处理
- 使用经典批处理引擎通过临时固定窗口将无界数据处理为会话
- 使用流引擎处理无界数据
- 处理的思考方向
- 时间域
- 事件时间域
- 处理时间域
术语
什么是流
- 一种数据处理引擎,它设计时考虑了无限的数据集
无界数据
- 一种不断增长、本质上无限的数据集
无界数据处理
- 一种持续的数据处理模式,应用于上述类型的无界数据
有界数据
- 将有限的“批量”数据集称为有界数据
批处理引擎
- 批处理引擎是那些仅考虑有界数据的引擎,批处理
流引擎
- 流引擎是考虑无界数据而设计的,流处理
低延迟、近似、推测结果
正确性
- 流系统需要一种随着时间的推移对持久状态进行检查点的方法
时间推理工具
- 这使您超越了批处理。用于推理时间的良好工具对于处理不同事件时间偏差的无界、无序数据至关重要。
数据处理模式
使用经典批处理引擎进行有界数据处理
用经典批处理引擎通过临时固定窗口进行无界数据处理
- 使用批处理引擎的重复运行来处理无界数据集的最常见方法是将输入数据窗口化到固定大小的窗口中,然后将每个窗口作为单独的有界数据源进行处理
使用经典批处理引擎通过临时固定窗口将无界数据处理为会话
使用流引擎处理无界数据
-
与时间无关
- 过滤无界数据
- 对无界数据执行内部联接
-
计算无界数据的近似值
-
窗口化
沿时间边界对数据集进行分区
事件时间中进度的强大概念,提供了一种推理在无界数据上运行的无序处理系统的完整性的方法。-
窗口策略
-
固定窗口
- 固定窗口将时间分割成具有固定大小时间长度的片段。
-
滑动窗口
- 固定窗口的扩展,滑动窗口由固定长度和固定周期定义。
-
会话
- 动态窗口的一个示例,会话由一系列事件组成,这些事件序列由大于某个超时的不活动间隙终止
-
-
水印
水印是关于事件时间的输入完整性的概念
-
分类
- 启发式水印
- 完美水印
-
缺点
-
太慢
- 当任何类型的水印由于已知的未处理数据(例如,由于网络带宽限制而缓慢增长的输入日志)而被正确延迟时,如果水印的进步是您唯一依赖于刺激结果的东西,那么这会直接转化为输出延迟 。
-
太快
- 当启发式水印错误地提前于应有的位置时,事件时间可能早于水印到达的数据,因此我稍后创建迟到的数据
-
完全靠水印是无法保证正确性的
-
-
-
触发器
触发器是一种机制,用于声明窗口的输出何时应相对于某些外部信号具体化
-
分类
-
基于信号的触发器
- 事件时间进度
- 处理时间进度
- 元素计数
- 标点符号
-
复合触发器
- 重复
- 逻辑与
- 逻辑或
- 序列
-
-
解决水印的缺点
- 修补太快
- 修补太慢
-
-
累积
累积模式指定同一窗口观察到的多个结果之间的关系
-
模式
-
丢弃
- 每个窗格仅包含在该特定窗格期间到达的值
-
累积
- 每个窗格包含在 该特定窗格,加上之前窗格中的所有值
-
累积和撤回
- 个窗格都包含新的累积模式值以及前一个窗格值的收回
-
-
-
处理的思考方向
-
What:计算什么结果
- 元素转换计算
-
Where:在事件时间中的哪里计算结果
-
窗口化
- 窗口的每个特定输出称为窗口的窗格
-
-
When:在处理时间内何时实现结果?
-
水印
-
触发器
-
允许延迟
- 窗口的生命周期,相当于水印可以延迟多久
-
-
How:结果的细化如何关联?
- 累积
时间域
事件时间域
事件实际发生的时间
-
按事件时间划分为固定窗口
-
按事件时间划分会话窗口
-
优点
- 事件时间正确性
- 您可以创建动态大小的窗口
-
缺点
- 由于窗口寿命延长,需要更多的数据缓冲
- 难以验证完整性
处理时间域
在处理过程中观察到事件的时间
-
按处理时间划分为固定窗口
-
优点
- 实现简单
- 判断窗口完整性很简单
-
缺点
- 无法友好的按事件发生时间要求的处理数据
- 当输入的顺序发生变化时,窗口的内容也会发生变化。