大规模数据处理实战
蔡元楠
硅谷资深工程师
41608 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
大规模数据处理实战
15
15
1.0x
00:00/00:00
登录|注册

32 | Beam Window:打通流处理的任督二脉

Read Transform
Window Transform
定义
Window Transform
定义
Window Transform
定义
代码示例
显式分配
全局窗口
处理时间
I/O连接器
有限数据集合
时间戳划分
会话窗口
滑动窗口
固定窗口
窗口分配
时间戳来源
窗口
批处理数据流水线
思考题
窗口类型
无界数据集
有界数据集
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
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • Chang
    老师,我对会话窗口的理解不知道对不对:像文中的例子gap是5 min的话,假设有一个数据流每4分钟一个流入一个数据,是不是只需要一个窗口?

    作者回复: 谢谢你的提问!是的,按照你说的情景最终只会产生一个会话窗口。

    2019-07-24
    2
    4
  • 微思
    老师,文章读完有两点疑惑的地方: 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-10
    3
  • cricket1981
    beam支持动态session gap定义吗?全局窗口的作用和使用场景是什么?beam支持自定义窗口吗?

    作者回复: 谢谢你的留言!动态定义sessino gap说实话我没有尝试过,所以我不确定给同一个PCollection设置多次Sessions Window的话会不会报错。 全局窗口的一个用处是在处理无边界数据的数据集时,配合触发器使用。例如每隔N段时间计算现有的所有数据平均值。 自定义窗口Beam现在应该是不支持的。

    2019-07-08
    2
    1
  • YX
    在 Beam 的世界中,窗口这个概念将 PCollection 里的每个元素根据时间戳(Timestamp)划分成为了不同的有限数据集合。 -------------------------- 请问下老师,是否支持按照元素个数设置窗口呢?
    2021-10-20
    1
  • 理性的执着
    另外还有一个问题,会话窗口的静态时间间隔和固定窗口的静态时间大小的区别是什么,都是设置一个时间。这块理解不过去了
    2020-10-25
  • 理性的执着
    固定窗口由一个静态窗口大小定于,那么一个元素只属于一个窗口。 滑动窗口由一个静态窗口大小和一个滑动周期定义,一个元素可以属于多个窗口。 这两个能理解,不太理解会话窗口, 老师,我这么理解对吗? 会话窗口是由一个静态的时间间隔定义,那么一个元素应该只属于一个窗口吗?这样理解对吗? 会话窗口的时间间隔跟滑动窗口的滑动周期好像呀
    2020-10-25
  • Junjie.M
    老师问下,流和批的区别就是看其使用那种窗口吗?那么这个窗口在哪里设置,input transform时吗?
    2020-04-14
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部