【Flink精讲】双流Join之Regular Join(即普通Join)

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
  • 注意:Inner Join不会产生回撤流

Left Join

回撤流:使用的是-D,而不是-U

输出流:+I(大写i)

  • 注意:Left Join会产生回撤流

Right Join
  • 注意:Right Join会产生回撤流

Full 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哪张表有用哪张表的

相关推荐

  1. 【Spark】SparkSQL Join选择逻辑

    2024-01-07 07:40:04       41 阅读
  2. FlinkSQLFlink SQL Join二三事

    2024-01-07 07:40:04       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-07 07:40:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-07 07:40:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-07 07:40:04       82 阅读
  4. Python语言-面向对象

    2024-01-07 07:40:04       91 阅读

热门阅读

  1. 深度学习中的反向传播数学计算过程

    2024-01-07 07:40:04       59 阅读
  2. 什么是ajax,为什么使用ajax!

    2024-01-07 07:40:04       63 阅读