关于global window

classic Classic list List threaded Threaded
2 messages Options
j l
Reply | Threaded
Open this post in threaded view
|

关于global window

j l
您好,我在看global window的时候有一些疑问,首先是global
window是全局唯一的,也就是所以的元素都会流到这一个window实例上,这样的话前面加keyBy还有什么意义呢?反正都要流到一个window里面,我测试的结果好像也确实是这样,我自定义了一个global
window,然后设置了process的并行度,但是window确实是只有一个
示例如下:

dataUnion.keyBy(0).window(new  StreamToBatchWindow()).process(new
StreamToBatchProcess()).setParallelism(20).print();

如果是这样的话,这个window岂不是成了瓶颈?不知道我理解的对不对,我是希望能多一些窗口对不同的key stream做global
window的处理。
另外一个就是global window会为每个key维护一个状态,这样如果key不断增加岂不是要爆了?怎样才能清除永远不会再出现的key的状态呢?

谢谢!
Reply | Threaded
Open this post in threaded view
|

Re:关于global window

hailongwang
Hi sparklelj,

Global window 的是所有相同的 key 的元素会在一个 window里,它没有 window end,所以需要自己实现 custom trigger 来触发 window 的计算[1]。
它属于 keyed window,并不是只能有一个 window 实例( windowAll 只有一个 window 实例)。
所以看下是不是用法有错误呢,你的 ‘ StreamToBatchWindow’ 类是继承了哪个接口的?


[1] https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/stream/operators/windows.html#global-windows


Best,
Hailong Wang
在 2020-11-20 01:19:09,"j l" <[hidden email]> 写道:

>您好,我在看global window的时候有一些疑问,首先是global
>window是全局唯一的,也就是所以的元素都会流到这一个window实例上,这样的话前面加keyBy还有什么意义呢?反正都要流到一个window里面,我测试的结果好像也确实是这样,我自定义了一个global
>window,然后设置了process的并行度,但是window确实是只有一个
>示例如下:
>
>dataUnion.keyBy(0).window(new  StreamToBatchWindow()).process(new
>StreamToBatchProcess()).setParallelism(20).print();
>
>如果是这样的话,这个window岂不是成了瓶颈?不知道我理解的对不对,我是希望能多一些窗口对不同的key stream做global
>window的处理。
>另外一个就是global window会为每个key维护一个状态,这样如果key不断增加岂不是要爆了?怎样才能清除永远不会再出现的key的状态呢?
>
>谢谢!