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

36 | Facebook游戏实时流处理Beam Pipeline实战(下)

思考题
本次讲解
上次总结
Facebook游戏实时流处理Beam Pipeline实战

该思维导图由 AI 生成,仅供参考

你好,我是蔡元楠。
在上一讲中,我们一起对怎样实现一个简易的游戏积分排行榜展开了讨论,也一起研究了如何使用批处理计算的方式在 Beam 中构建出一个数据流水线来得出排行榜结果。
我们知道,虽然批处理计算可以得到一个完整的结果,但是它也存在着自身的不足,比如会有一定的延时,需要额外的 crontab 来管理定时任务,增加了维护成本等等。
所以在上一讲的末尾,我们提出了使用实时流处理来改进这些不足,而其中就需要用到窗口、触发器和累加模式这几个概念。
相信学习了第 32 讲的内容后,你对于窗口在 Beam 中是如何运作的,已经比较了解了。对于有效时间为一周的积分排行榜来说,我们可以赋予一个“窗口时长为一周的固定窗口”给数据流水线。也就是说,我们最终的结果会按照每一周的时长来得出。
那接下来的问题就剩下我们怎么定义触发器和累加模式了。
首先,我想先讲讲触发器在 Beam 中是怎么运作的。在第 23 讲中,我们已经了解了触发器在 Beam 中的作用。它是用于告诉数据流水线,什么时候需要计算一遍落在窗口中的所有数据的。这在实时流处理中尤为重要。
在实时流处理当中,我们总是需要在数据结果的完整性延迟性上做出一些取舍。
如果我们设置的触发器比较频繁,例如说每隔几分钟甚至是几秒钟,或者是在时间上很早发生的话,那就表示我们更倾向于数据流水线的延时比较小,但是不一定能够获得完整的数据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了如何使用Beam实现游戏积分排行榜的实时流处理。首先讨论了批处理计算的不足之处,引出了使用实时流处理来改进的需求。接着详细介绍了在Beam中如何运用窗口、触发器和累加模式来处理实时流数据。重点讲解了触发器的作用和设置方式,以及如何处理“迟到”的数据。此外,还介绍了Beam中可设置的四种触发器模式和两种累加模式。最后,给出了一个实时流处理数据流水线的示例代码,展示了如何使用Beam来实现游戏积分排行榜的实时流处理。整篇文章以实际案例为基础,深入浅出地介绍了实时流处理的关键概念和技术细节,对读者快速了解实时流处理的原理和应用具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • Geeker
    例子很好!

    作者回复: 谢谢

    2020-03-07
    1
  • 微思
    老师讲的很好!要是能提供一个完整的案例,包括测试数据和运行时,不需要读者折腾太多,下载下来直接就能运行,相信会引起更多的共鸣,将这个专栏衬托得更加精彩!
    2019-07-19
    1
    6
  • 时光机器
    感觉这个例子没有提现出流式计算的实时特性呀。老师能举个像阿里实时战报看板这样高实时性要求的例子吗,感谢感谢
    2020-01-12
    3
  • 之渊
    参考https://blog.csdn.net/a799581229/article/details/106444576 这个博客入门以及触发器说明的也不错
    2020-08-24
    1
  • Cool
    觉得这些例子逻辑上还是相对来说比较简单, 流式处理当输入源是多个的时候, 比如对于交易所来说 一个是实时 trade, 一个是实时的 price,都使用相同的 fix_window, join 起来之后,再做计算输出等等
    2019-09-26
    1
  • stephen
    如果窗口跟滑动步长一样或者更大,比如推荐点击率,20秒窗口,每20秒计算一次,也要允许延迟前一个窗口期甚至几个窗口期的延迟数据重新计算,这种beam能好的支持么?还是说只能借助外部hbase一类实时转储结果?
    2020-09-16
  • Cool
    蔡老师, 对于流处理需要对pipeline中的数据,进行数据补充时,可以使用 sideinput, 但是我看了官方文档,只能是静态的metadata,然后再Pardo中加到每一条数据, 并不能动态更新这个sideinput(比如在数据库中动态查询), 请问这种情况能怎么解决?
    2019-09-26
    1
  • 李孟聊AI
    老师我想问下, PCollection<String>这个种懒加载出来的集合怎么转存成临时的list集合?
    2019-07-24
    1
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部