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

33 | 横看成岭侧成峰:再战Streaming WordCount

Pub/Sub模式
会话窗口
滑动窗口
固定窗口
有界数据:需要自己指定时间戳
无界数据:数据记录自带时间戳
示例:从每行的开头提取时间戳
例如美团外卖电动车图片
数据时刻不停
例如莎士比亚文集
数据已准备就绪
利用窗口方式处理
应用场景不适合一般的数据批处理
掌握了读取无边界数据、添加时间戳、应用窗口、复用DoFn和PTransform、输出无边界数据的方法
巩固了区分有界数据和无界数据的方法
探索了Beam窗口在流处理的应用
示例:使用PubsubIO.writeStrings()方法输出处理结果
无边界数据输出模式
直接使用之前的PTransform
Transform不区分有界数据和无界数据
应用窗口类型
时间戳来源
手动添加时间戳
时间戳通常是原生的
示例:使用Beam的Kafka IO读取Kafka消息
Pub/Sub系统
logging系统
无界数据
有界数据
思考题
总结
输出无边界数据
复用之前的DoFn和PTransform
在PCollection应用窗口
给PCollection数据添加时间戳
读取无边界数据
区分有界数据和无界数据
横看成岭侧成峰:再战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
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 老师,窗口的跨度能多大,比如我想计算每天用户访问量?

    作者回复: 谢谢你的留言!窗口理论是可以无限大的,如果你想计算每天用户访问量比较直观的做法就是设置一个窗口时长为24小时的固定窗口。

    2019-07-10
    3
  • Ming
    假如要给一个流处理的pipeline更换计算逻辑的话,在Beam层上要做相应处理吗?还是完全由底层的实现来处理的? Beam虽好,但是似乎,作为开发首当其冲的还是要熟练掌握一个底层计算框架。

    作者回复: 谢谢你的留言!你所说的pipeline更换计算逻辑是指应用层的逻辑还是底层实现的抽象方法?如果是底层实现的抽象方法,那还是要由底层来实现的。

    2019-07-10
    2
    1
  • 三水
    老师,现在使用 Beam 模型的项目中,使用 Python 语言的多吗?如果用 Python 语言的话,Beam 除了Google的 云 Pub/Sub,还不支持 Kafka 类似的,Built-in I/O Transform 也太少了,这些都需要自己实现吗?

    作者回复: 谢谢你的提问!其实Beam对于python的支撑确实没有Java的多。在没有原生支持的情况下是需要自己实现。我知道python对于KafkaIO现在有Work in process的。

    2019-07-10
    1
  • 端碗吹水
    请问老师,假设有个报表需求是实时显示从起始至今所有数据的平均值,那么流处理能否实现这种对开始至今的数据求平均值,如果能的话是不是每次新数据到来都得重算数据
    2020-12-10
  • Junjie.M
    老师请问对于PTransform Runner是DIRECT时可以设置并行度吗
    2020-04-16
  • JohnT3e
    无界数据中窗口的时间跨度的选择是否可以从下面这些方面考虑: 1. 业务实时性要求 2. 数据量 比如文章中的统计一个月的高频词和某一周的,那么可以选择窗口长度为一周的固定窗口(常用英文单词是有限的,且莎士比亚一周产出的文章数量也是比较有限的。同时也符合业务上的时间要求),后面再设置一个长度为一个月的窗口,将上一个输出的PCollection结果进行合并。
    2019-07-10
    1
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部