【Flink精讲】双流Join之Regular Join(即普通Join)
发布时间:2024年01月06日
Regular Join
普通Join
- 通过条件关联两条实时数据流:动态表Join动态表
- 支持Inner Join、Left Join、Right Join、Full Join。
1. Inner Join(Join):只有两边数据流都关联上才输出+[L,R]
2. Left Join(Left Outer Join):只要左流有数据即输出+[L,NULL],右流数据到达时会产生撤回流-[L,NULL],并输出+[L,R]
3. Right Join(Right Outer Join):和Left Join逻辑相反
4. Full Join(Full Outer Join):左流有数据输出+[L,NULL],右流有数据即输出+[NULL,R],两个数据流关联上之后产生回撤流并输出完整结果
图例
Inner Join
Left Join
回撤流:使用的是-D,而不是-U
输出流:+I(大写i)
Right Join
Full Join
案例实战
订单表和支付表进行关联构建宽表
- 设置state的TTL防止内存过大
- left join/right join/full join时要支持回撤,kafka不支持回撤流
1.?upsert-kafka的connector支持回撤流
upsert-kafka必须指定主键字段:PRIMARY KEY(order_id) NOT ENFORCED
2.?order_id为空报错
full join时可以case when哪张表有用哪张表的
文章来源:https://blog.csdn.net/weixin_40035038/article/details/135431725
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!