flink的三种windows join

window join用于连接两个流的元素,他们在一个窗口钟用于共享一个公共的key.我们一般可以用一个窗口分配器定义这些窗口(join情况下一般包含了Tumbling Windows (滚动)、Sliding Windows(滑动)和Session Windows (会话窗口))
Windows Join的代码一般形式如下:
在这里插入图片描述
注:创建两个流元素的成对组合的行为类似于内连接。如果来自一个流的元素和另一个流没有相对应的连接元素,则不会发出该元素。
结合在一起的那些元素将其时间戳设置为各自窗口的最大时间戳。例如,以[5,10]为边界的窗口将产生连接的元素的时间戳为9。
结合
第一种:Tumbling Window Join(滚动时间窗口join)
执行滚动窗口连接时,**具有公共key和公共tumbling window的所有的元素都已成对的组合形式进行连接,并传递给joinfunction或flatjoinfunction。**因为这就像一个内链接,在滚动窗口中没有来自另一个流的元素的流的元素不会被输出
在这里插入图片描述

如图所示:们定义了一个大小为2毫秒的滚动窗口,其结果为[0,1],[2,3], …。该图像显示了每个窗口中所有元素的成对组合,这些元素将传递给JoinFunction。注意,在翻滚窗口[6,7]中没有发出任何内容,因为在绿色流中没有元素与橙色元素⑥、⑦连接。
注意:这个joinFunction 进行便利会出现4个值(第一个窗口为例子)0->0 ,0->1 ,1->0 ,1->0 ,
既(0,0 0,1 1,0 1,1) 四种结果
例子程序如下:
在这里插入图片描述

第二种 :Sliding Window Join (滑动窗口) 窗口直接可以重合
在这里插入图片描述
我们使用的滑动窗口大小为2毫秒,滑动1毫秒,x轴以下是每个滑动窗口的Join结果。在这里你还可以看到橙②与绿色③窗口Join(2、3),但不与任何窗口Join[1,2].
具体的代码程序为:
在这里插入图片描述
第三种:Session Window Join 事件join 窗口
在执行会话窗口连接时,具有相同键的所有元素(当“组合”时满足会话条件)都以成对的组合进行连接,并传递给JoinFunction或FlatJoinFunction。再次执行内部连接,因此如果会话窗口只包含来自一个流的元素,则不会发出任何输出!
在这里插入图片描述
在这里,定义一个会话窗口连接,其中每个会话被至少1ms的间隔所分割。有三个会话,在前两个会话中,来自两个流的连接元素被传递给JoinFunction。在第三次会话中绿色流没有元素,所以⑧⑨不会Join。
例子代码程序为:
在这里插入图片描述
注意:综上我们可以知道window join 的逻辑步骤为
1、窗口内过滤具有公共key的所有的元素都已成对的组合形式进行连接,
2、传递给joinfunction或flatjoinfunction然后执行操作

interval join 参考下一篇:https://blog.csdn.net/weixin_40809627/article/details/106275607

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值