36 | Facebook游戏实时流处理Beam Pipeline实战(下)
蔡元楠
该思维导图由 AI 生成,仅供参考
你好,我是蔡元楠。
在上一讲中,我们一起对怎样实现一个简易的游戏积分排行榜展开了讨论,也一起研究了如何使用批处理计算的方式在 Beam 中构建出一个数据流水线来得出排行榜结果。
我们知道,虽然批处理计算可以得到一个完整的结果,但是它也存在着自身的不足,比如会有一定的延时,需要额外的 crontab 来管理定时任务,增加了维护成本等等。
所以在上一讲的末尾,我们提出了使用实时流处理来改进这些不足,而其中就需要用到窗口、触发器和累加模式这几个概念。
相信学习了第 32 讲的内容后,你对于窗口在 Beam 中是如何运作的,已经比较了解了。对于有效时间为一周的积分排行榜来说,我们可以赋予一个“窗口时长为一周的固定窗口”给数据流水线。也就是说,我们最终的结果会按照每一周的时长来得出。
那接下来的问题就剩下我们怎么定义触发器和累加模式了。
首先,我想先讲讲触发器在 Beam 中是怎么运作的。在第 23 讲中,我们已经了解了触发器在 Beam 中的作用。它是用于告诉数据流水线,什么时候需要计算一遍落在窗口中的所有数据的。这在实时流处理中尤为重要。
在实时流处理当中,我们总是需要在数据结果的完整性和延迟性上做出一些取舍。
如果我们设置的触发器比较频繁,例如说每隔几分钟甚至是几秒钟,或者是在时间上很早发生的话,那就表示我们更倾向于数据流水线的延时比较小,但是不一定能够获得完整的数据。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了如何使用Beam实现游戏积分排行榜的实时流处理。首先讨论了批处理计算的不足之处,引出了使用实时流处理来改进的需求。接着详细介绍了在Beam中如何运用窗口、触发器和累加模式来处理实时流数据。重点讲解了触发器的作用和设置方式,以及如何处理“迟到”的数据。此外,还介绍了Beam中可设置的四种触发器模式和两种累加模式。最后,给出了一个实时流处理数据流水线的示例代码,展示了如何使用Beam来实现游戏积分排行榜的实时流处理。整篇文章以实际案例为基础,深入浅出地介绍了实时流处理的关键概念和技术细节,对读者快速了解实时流处理的原理和应用具有很高的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》,新⼈⾸单¥59
《大规模数据处理实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(8)
- 最新
- 精选
- Geeker例子很好!
作者回复: 谢谢
2020-03-071 - 微思老师讲的很好!要是能提供一个完整的案例,包括测试数据和运行时,不需要读者折腾太多,下载下来直接就能运行,相信会引起更多的共鸣,将这个专栏衬托得更加精彩!2019-07-1916
- 时光机器感觉这个例子没有提现出流式计算的实时特性呀。老师能举个像阿里实时战报看板这样高实时性要求的例子吗,感谢感谢2020-01-123
- 之渊参考https://blog.csdn.net/a799581229/article/details/106444576 这个博客入门以及触发器说明的也不错2020-08-241
- Cool觉得这些例子逻辑上还是相对来说比较简单, 流式处理当输入源是多个的时候, 比如对于交易所来说 一个是实时 trade, 一个是实时的 price,都使用相同的 fix_window, join 起来之后,再做计算输出等等2019-09-261
- stephen如果窗口跟滑动步长一样或者更大,比如推荐点击率,20秒窗口,每20秒计算一次,也要允许延迟前一个窗口期甚至几个窗口期的延迟数据重新计算,这种beam能好的支持么?还是说只能借助外部hbase一类实时转储结果?2020-09-16
- Cool蔡老师, 对于流处理需要对pipeline中的数据,进行数据补充时,可以使用 sideinput, 但是我看了官方文档,只能是静态的metadata,然后再Pardo中加到每一条数据, 并不能动态更新这个sideinput(比如在数据库中动态查询), 请问这种情况能怎么解决?2019-09-261
- 李孟聊AI老师我想问下, PCollection<String>这个种懒加载出来的集合怎么转存成临时的list集合?2019-07-241
收起评论