开发者社区> 问答> 正文

维表 join 里第三个大的实现思路是什么?

维表 join 里第三个大的实现思路是什么?

展开
收起
芯在这 2021-12-09 23:52:24 450 0
1 条回答
写回答
取消 提交回答
  • 第三个大的思路是广播维表,主要是利用 broadcast State 将维度数据流广播到下游 task 做 join。

    实现方式:

    将维度数据发送到 Kafka 作为广播原始流 S1

    定义状态描述符 MapStateDescriptor。调用 S1.broadcast(),获得 broadCastStream S2

    调用非广播流 S3.connect(S2), 得到 BroadcastConnectedStream S4

    在 KeyedBroadcastProcessFunction/BroadcastProcessFunction 实现关联处理逻辑,并作为参数调用 S4.process()

    这个方案,它的优点是维度的变更可以及时的更新到结果。然后缺点就是数据还是需要保存在内存中,因为它是存在 state 里的,所以支持维表数据量仍然不是很大。适用的场景就是我们需要时时的去感知维度的变更,且维度数据又可以转化为实时流。

    2021-12-09 23:53:02
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
RowKey与索引设计:技巧与案例分析 立即下载
Phoenix 全局索引原理与实践 立即下载
低代码开发师(初级)实战教程 立即下载