33|流计算中的数据关联:流与流、流与批
吴磊
你好,我是吴磊。
在上一讲,我们提到,Structured Streaming 会复用 Spark SQL 所提供的一切数据处理能力,比如数据抽取、过滤、分组聚合、关联、排序,等等。不过,在这些常规的数据处理类型中,有一类操作需要我们特别关注,它就是数据关联(Joins)。
这主要是出于两方面的原因,一来,数据关联的应用非常普遍,可以说是数据应用中“出场率”最高的操作类型之一;再者,与批处理中的数据关联不同,流计算中的数据关联,还需要考虑到流处理过程中固有的一些限制,比如说时间窗口、数据延迟容忍度、输出模式,等等。
因此,今天这一讲,我们专门来说一说 Structured Streaming 中的数据关联。我们先盘点好 Structured Streaming 的技能树,看看它都支持哪些种类的数据关联。之后再用一个短视频推荐的例子上手试验一下,总结出不同类型数据关联的适用场景以及注意事项。
流计算中的数据关联
我们知道,如果按照关联形式来划分的话,数据关联可以分为 Inner Join、Left Join、Right Join、Semi Join、Anti Join,等等。如果按照实现方式来划分的话,可以分为 Nested Loop Join、Sort Merge Join 和 Hash Join。而如果考虑分布式环境下数据分发模式的话,Join 又可以分为 Shuffle Join 和 Broadcast Join。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了流计算中的数据关联技术挑战及其解决方案。首先介绍了在Structured Streaming框架下的数据关联技能树,包括不同类型的数据关联,如Inner Join、Left Join、Right Join等,以及实现方式和分布式环境下的数据分发模式。文章还探讨了流批关联和双流关联两种不同的数据来源分类标准,并详细介绍了离线用户属性与实时用户反馈的关联过程。通过代码示例演示了如何从批数据与流数据中创建DataFrame,并实现两者的关联,达到构建用户特征向量的目的。此外,还提及了优化方法,如Broadcast Join,来提升执行性能。在双流关联中,强调了利用Watermark机制和事件时间的约束,以降低状态数据维护的成本与开销。总的来说,本文全面介绍了流计算中数据关联的技术挑战、实现方式和优化方法,对于读者快速掌握这一技术领域的概况具有很高的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《零基础入门 Spark》,新⼈⾸单¥59
《零基础入门 Spark》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- xxx在双流关联中,我们需要 Watermark 和关联条件,来同时约束状态数据维护的成本与开销。那么,在流批关联中,我们是否也需要同样的约束呢? ----- 流批关联应该不需要,因为这里的“状态数据”就是批数据的大小,不会改变的,限制也没啥用。
作者回复: 没错~ 满分💯,就是这么回事
2022-02-0121 - H请教一下,流批关联时,如何定时更新静态数据2022-08-06归属地:北京33
- ByteFeng先分组聚合,在join;先join,再分组组合,性能上有区别吗2023-02-04归属地:上海
- 钱鹏 Allen个人认为批流处理中,有一部分,例如批处理的数据确定,我们只需要把焦点放在另一个上面,设置watermark和关联条件2022-11-14归属地:广东
- H请教一下,流批关联的时候,怎样定时更新静态2022-08-06归属地:北京
收起评论