Flink keyBy:键太多?
Flink keyBy: too many keys?
首先,这是我的代码逻辑
source.keby(key)
.window(1d)
.process(computeLogic)
.sink(sinkFunction)
我的问题是:
如果我的钥匙太多,比方说超过 10,000 个钥匙,每个钥匙会有一个 window 吗?会不会Windows太多太占内存导致OOM?
will there be one window for each key?
视情况而定。您可以定义自己的 Window,每个 window 实现一个键。对于预定义的 window,如 Tumbling Window,每个键将有多个 windows。例如。对于允许延迟的 5 秒翻滚事件 Window,同一个键会有多个 windows。
Does too many Windows take up too much memory and cause OOM ?
如果key比较多,可以给Flink job增加并行度,这样每个task处理的key就少了。
在task上有很多windows的情况下,如果使用Heap State(基于内存的状态),则可能会导致OOM。对于像 RocksDB 状态后端这样的状态后端,那么它应该没问题,因为状态将被刷新到磁盘。
更多详情可以参考:https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html
首先,这是我的代码逻辑
source.keby(key)
.window(1d)
.process(computeLogic)
.sink(sinkFunction)
我的问题是:
如果我的钥匙太多,比方说超过 10,000 个钥匙,每个钥匙会有一个 window 吗?会不会Windows太多太占内存导致OOM?
will there be one window for each key?
视情况而定。您可以定义自己的 Window,每个 window 实现一个键。对于预定义的 window,如 Tumbling Window,每个键将有多个 windows。例如。对于允许延迟的 5 秒翻滚事件 Window,同一个键会有多个 windows。
Does too many Windows take up too much memory and cause OOM ?
如果key比较多,可以给Flink job增加并行度,这样每个task处理的key就少了。
在task上有很多windows的情况下,如果使用Heap State(基于内存的状态),则可能会导致OOM。对于像 RocksDB 状态后端这样的状态后端,那么它应该没问题,因为状态将被刷新到磁盘。
更多详情可以参考:https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html