33 | 横看成岭侧成峰:再战Streaming WordCount
蔡元楠
该思维导图由 AI 生成,仅供参考
你好,我是蔡元楠。
今天我要与你分享的主题是“横看成岭侧成峰:再战 Streaming WordCount”。
在上一讲中,我们学习了 Beam 窗口(Window)的概念。当时,我们提到窗口技术的产生是因为我们想要根据时间戳去分组处理一个 PCollection 中的元素。
我们也提到了在“统计莎士比亚文集词频”这个例子中,如果莎士比亚穿越到了现代,成了一名极客时间的专栏作家,我们就可能需要根据他文章的写作时间来统计词频了。
举个具体的例子的话,就是我们能不能灵活地得到莎士比亚在 2017 年 9 月使用的高频词汇?或者是他在 2018 年第 7 个周五偏爱使用的高频词汇呢?
时效性是数据处理很重要的一部分,类似上面这样的问题还有很多。
比如,能不能根据实时交通数据,得到最近 24 小时之内拥堵的道路?能不能根据所有微信分享文章的点击数据,得到过去一周最热门的文章?这些问题都是可以用窗口技术来解决。
所以今天这一讲,我们就来看看怎样在 WordCount 这个例子中使用窗口技术。我会介绍怎样在 Beam 中实现以下六个问题:
怎样区分有界数据还是无界数据?
怎样读取无边界数据?
怎样给 PCollection 数据添加时间戳?
怎样在 PCollection 应用窗口?
怎样复用之前的 DoFn 和 PTransform?
怎样存储无边界数据?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
在Beam中使用窗口技术进行Streaming WordCount 本文深入探讨了在Beam中使用窗口技术进行Streaming WordCount的方法。首先介绍了有界数据和无界数据的区别,以及如何读取无界数据,例如从logging系统或者Pub/Sub系统中获取数据。接着详细介绍了给PCollection数据添加时间戳,以及在PCollection应用窗口的方法。作者还提到了如何复用之前的DoFn和PTransform,并且强调了在应用了窗口之后,数据处理是在每一个窗口中进行的。最后,文章讨论了输出无边界数据的方法,特别是针对每一个窗口的处理结果如何以Pub/Sub的模式发布出去。 通过本文,读者可以巩固区分有界数据和无界数据的方法,掌握在Beam中读取无边界数据、给PCollection数据添加时间戳、在PCollection应用窗口、复用之前的DoFn和PTransform以及输出无边界数据的技术。这些方法的融会贯通将使读者能够更好地处理时间性数据或流处理问题。对于想要深入了解数据处理技术的读者来说,本文是一篇值得阅读的文章。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》,新⼈⾸单¥59
《大规模数据处理实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- 陈老师,窗口的跨度能多大,比如我想计算每天用户访问量?
作者回复: 谢谢你的留言!窗口理论是可以无限大的,如果你想计算每天用户访问量比较直观的做法就是设置一个窗口时长为24小时的固定窗口。
2019-07-103 - Ming假如要给一个流处理的pipeline更换计算逻辑的话,在Beam层上要做相应处理吗?还是完全由底层的实现来处理的? Beam虽好,但是似乎,作为开发首当其冲的还是要熟练掌握一个底层计算框架。
作者回复: 谢谢你的留言!你所说的pipeline更换计算逻辑是指应用层的逻辑还是底层实现的抽象方法?如果是底层实现的抽象方法,那还是要由底层来实现的。
2019-07-1021 - 三水老师,现在使用 Beam 模型的项目中,使用 Python 语言的多吗?如果用 Python 语言的话,Beam 除了Google的 云 Pub/Sub,还不支持 Kafka 类似的,Built-in I/O Transform 也太少了,这些都需要自己实现吗?
作者回复: 谢谢你的提问!其实Beam对于python的支撑确实没有Java的多。在没有原生支持的情况下是需要自己实现。我知道python对于KafkaIO现在有Work in process的。
2019-07-101 - 端碗吹水请问老师,假设有个报表需求是实时显示从起始至今所有数据的平均值,那么流处理能否实现这种对开始至今的数据求平均值,如果能的话是不是每次新数据到来都得重算数据2020-12-10
- Junjie.M老师请问对于PTransform Runner是DIRECT时可以设置并行度吗2020-04-16
- JohnT3e无界数据中窗口的时间跨度的选择是否可以从下面这些方面考虑: 1. 业务实时性要求 2. 数据量 比如文章中的统计一个月的高频词和某一周的,那么可以选择窗口长度为一周的固定窗口(常用英文单词是有限的,且莎士比亚一周产出的文章数量也是比较有限的。同时也符合业务上的时间要求),后面再设置一个长度为一个月的窗口,将上一个输出的PCollection结果进行合并。2019-07-101
收起评论