apache-spark - 流式传输:翻转窗口与微批处理
问题描述
流处理中 5 秒的翻转窗口与微批处理时 5 秒的微批处理有何不同?两者都有一个 5 秒的非重叠窗口,在此期间它们处理记录然后继续。
我知道流处理中有时间的概念:事件、摄取和处理时间。我们能否推断出使用微批处理的流处理只不过是使用具有摄取时间或处理时间的翻转窗口的流处理?
解决方案
经过更多研究,这是我的结论
Spark 的早期版本至少为 1.6,据我所知(请随时纠正我),流处理的概念基于微批处理,其中流处理作为批处理的特殊情况处理,以便可以处理流在有限(非常短)持续时间的微批次中。
翻转窗口是进化流处理模型的一部分(其中数据不断进入一个巨大的无界表,而批处理被视为流处理的一种特殊情况),它的工作原理是:
- 挡住了无界巨窗/桌子的“过去”
- 然后期待在未来的有限持续时间内进入这个巨大窗口的入站数据,比如 10秒
- 处理它
- 返回第 1 步
因此,作为黑盒的微批处理与翻转窗口非常相似,但区别在于用于实现窗口处理的底层架构/设计/方法。
资料来源:
Martin Klepmann 设计数据密集型应用程序
http://blog.madhukaraphatak.com/introduction-to-flink-streaming-part-2/
推荐阅读
- r - 删除列中的重复行并保留 R 中的最后一行
- python - 无法转换 Python 列表中项目的值或类型
- hadoop - DistCP 获取块 MD5 失败
- python - 使用 PyMC3 线性拟合的后验分布,预测给定 X 的 y 的置信区间
- javascript - 当父组件和子组件也是功能组件时,如何将函数作为道具传递?
- postgresql - 如何在 Postgresql 中查找带有任何预定义标签的帖子
- unit-testing - TDD + DDD:模型抽象
- python - 如何使用 url_for 将 jinja 变量传递到烧瓶中
- python - 在python中将数据框绘制为pdf中的表格
- c - 获得任意两个数组的最大总起点(两个数组中的最大和路径)