32 | Beam Window:打通流处理的任督二脉
蔡元楠
该思维导图由 AI 生成,仅供参考
你好,我是蔡元楠。
今天我要与你分享的主题是“Beam Window:打通流处理的任督二脉”。
在上一讲中,我们一起用 Beam 编写了第一个完整的 WordCount 项目,我们所用的例子是统计莎士比亚的文集中最常使用到的一些单词。
这里我们所用到的“莎士比亚文集”这种类型的数据集是一个静态的数据集。也就是说,我们在生成输入数据集的时候,就已经知道了这个数据集是完整的,并不需要再等待新的数据进来。
根据前面的内容,我们可以把这种数据集归类为有界数据集(Bounded Dataset)。这里我们的数据流水线就是一个批处理的数据流水线。
这个时候你可能会有一个疑问,如果我们想要统计的内容是一个正在连载的小说,我们在编写数据流水线的时候,这个小说还并没有完结,也就是说,未来还会不断有新的内容作为输入数据流入我们的数据流水线,那我们需要怎么做呢?
这个时候我们就需要用到窗口(Window)这个概念了。
窗口
在 Beam 的世界中,窗口这个概念将 PCollection 里的每个元素根据时间戳(Timestamp)划分成为了不同的有限数据集合。
当我们要将一些聚合操作(Aggregation)应用在 PCollection 上面的时候,或者我们想要将不同的 PCollections 连接(Join)在一起的时候,其实 Beam 是将这些操作应用在了这些被窗口划分好的不同数据集合上的。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Apache Beam中的Beam Window概念是处理有界和无界数据集的关键。本文介绍了窗口的基本概念和不同类型,包括固定窗口、滑动窗口和会话窗口。固定窗口根据静态窗口大小划分数据集,滑动窗口允许部分重叠,而会话窗口用于记录持续一段时间的活动数据集。文章还提到了Beam中如何使用Window Transform来定义不同类型的窗口。通过窗口的应用,读者可以了解如何在Beam中处理无界数据集,以及如何根据时间戳对数据进行划分和处理。这篇文章对于想要深入了解Apache Beam数据处理框架的读者来说,提供了重要的技术概念和实际应用方法。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》,新⼈⾸单¥59
《大规模数据处理实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- Chang老师,我对会话窗口的理解不知道对不对:像文中的例子gap是5 min的话,假设有一个数据流每4分钟一个流入一个数据,是不是只需要一个窗口?
作者回复: 谢谢你的提问!是的,按照你说的情景最终只会产生一个会话窗口。
2019-07-2424 - 微思老师,文章读完有两点疑惑的地方: 1、文中滑动窗口样例,窗口大小1小时,滑动周期30分钟: [July 8, 2019 0:00:00 AM, July 8, 2019 1:00:00 AM) [July 8, 2019 0:30:00 AM, July 8, 2019 1:30:00 AM) [July 8, 2019 1:00:00 AM, July 8, 2019 1:30:00 AM) [July 8, 2019 1:30:00 AM, July 8, 2019 2:00:00 AM) …… 最后两条是否笔误了?窗口大小固定是1小时,我的理解应该是下面这样: [July 8, 2019 1:00:00 AM, July 8, 2019 2:00:00 AM) [July 8, 2019 1:30:00 AM, July 8, 2019 2:30:00 AM) 2、会话窗口是否可以这么理解:指定一段时间,在这段时间范围圈定的数据集上去应用固定窗口。 请老师指教,谢谢!
作者回复: 谢谢你的留言! 1、是的呢,eagle eye啊,已经给编辑部反映修改了。 2、如果我没有理解错你的留言的话,应该是每次得到一个新数据后,如果这个新数据的时间戳和之前的会话窗口边界相差没有超过Duration Gap的话,就将这个新数据归入会话窗口中,并且再将窗口向外延时Duration Gap的时长。
2019-07-103 - cricket1981beam支持动态session gap定义吗?全局窗口的作用和使用场景是什么?beam支持自定义窗口吗?
作者回复: 谢谢你的留言!动态定义sessino gap说实话我没有尝试过,所以我不确定给同一个PCollection设置多次Sessions Window的话会不会报错。 全局窗口的一个用处是在处理无边界数据的数据集时,配合触发器使用。例如每隔N段时间计算现有的所有数据平均值。 自定义窗口Beam现在应该是不支持的。
2019-07-0821 - YX在 Beam 的世界中,窗口这个概念将 PCollection 里的每个元素根据时间戳(Timestamp)划分成为了不同的有限数据集合。 -------------------------- 请问下老师,是否支持按照元素个数设置窗口呢?2021-10-201
- 理性的执着另外还有一个问题,会话窗口的静态时间间隔和固定窗口的静态时间大小的区别是什么,都是设置一个时间。这块理解不过去了2020-10-25
- 理性的执着固定窗口由一个静态窗口大小定于,那么一个元素只属于一个窗口。 滑动窗口由一个静态窗口大小和一个滑动周期定义,一个元素可以属于多个窗口。 这两个能理解,不太理解会话窗口, 老师,我这么理解对吗? 会话窗口是由一个静态的时间间隔定义,那么一个元素应该只属于一个窗口吗?这样理解对吗? 会话窗口的时间间隔跟滑动窗口的滑动周期好像呀2020-10-25
- Junjie.M老师问下,流和批的区别就是看其使用那种窗口吗?那么这个窗口在哪里设置,input transform时吗?2020-04-14
收起评论