零基础入门 Spark
吴磊
前 FreeWheel 机器学习研发经理
19171 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
零基础入门 Spark
15
15
1.0x
00:00/00:00
登录|注册

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
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • xxx
    在双流关联中,我们需要 Watermark 和关联条件,来同时约束状态数据维护的成本与开销。那么,在流批关联中,我们是否也需要同样的约束呢? ----- 流批关联应该不需要,因为这里的“状态数据”就是批数据的大小,不会改变的,限制也没啥用。

    作者回复: 没错~ 满分💯,就是这么回事

    2022-02-01
    2
    1
  • H
    请教一下,流批关联时,如何定时更新静态数据
    2022-08-06归属地:北京
    3
    3
  • ByteFeng
    先分组聚合,在join;先join,再分组组合,性能上有区别吗
    2023-02-04归属地:上海
  • 钱鹏 Allen
    个人认为批流处理中,有一部分,例如批处理的数据确定,我们只需要把焦点放在另一个上面,设置watermark和关联条件
    2022-11-14归属地:广东
  • H
    请教一下,流批关联的时候,怎样定时更新静态
    2022-08-06归属地:北京
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部