You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by Peihui He <pe...@gmail.com> on 2022/05/29 03:54:38 UTC

flink key by 逻辑疑问

Hi, all

请教下大家,flink key by 后 使用process 来处理数据。现在有个问题:
当key不限量的情况下,比如uuid,这种情况下,下游都会创建一个process 对象来处理数据不?
如果这样的话,是不是没多久就会oom呢?

大家有熟悉这块相关flink 源码不?求指导,想自己观察下。

Best Regards!

Re: flink key by 逻辑疑问

Posted by Shengkai Fang <fs...@gmail.com>.
Hi.

会根据 key 的 hash 值分配到固定个数的 keygroup 之中的。简单来说,跟HashMap<K, List<V>>
有点相似。金竹老师有一篇文章详细解释了[1]。

如果想看实现的话,可以从 KeyGroupStreamPartitioner 入手来看看 Table 层是怎么做的。

Best,
Shengkai

[1] https://developer.aliyun.com/article/667562

Peihui He <pe...@gmail.com> 于2022年5月29日周日 11:55写道:

> Hi, all
>
> 请教下大家,flink key by 后 使用process 来处理数据。现在有个问题:
> 当key不限量的情况下,比如uuid,这种情况下,下游都会创建一个process 对象来处理数据不?
> 如果这样的话,是不是没多久就会oom呢?
>
> 大家有熟悉这块相关flink 源码不?求指导,想自己观察下。
>
> Best Regards!
>

Re:flink key by 逻辑疑问

Posted by Xuyang <xy...@163.com>.
有多少个并发度,就有多少个process对象,因此就这个对象而言,不会出现OOM的情况。但是,如果你每个key都需要存state,在key无限量的情况下,会导致state膨胀的很大,可能会出现OOM的情况。
在 2022-05-29 11:54:38,"Peihui He" <pe...@gmail.com> 写道:
>Hi, all
>
>请教下大家,flink key by 后 使用process 来处理数据。现在有个问题:
>当key不限量的情况下,比如uuid,这种情况下,下游都会创建一个process 对象来处理数据不?
>如果这样的话,是不是没多久就会oom呢?
>
>大家有熟悉这块相关flink 源码不?求指导,想自己观察下。
>
>Best Regards!

Re: flink key by 逻辑疑问

Posted by yidan zhao <hi...@gmail.com>.
下游的process算子数取决于并行度,parallelism。而不是你的数据key有多少。

Peihui He <pe...@gmail.com> 于2022年5月29日周日 11:55写道:
>
> Hi, all
>
> 请教下大家,flink key by 后 使用process 来处理数据。现在有个问题:
> 当key不限量的情况下,比如uuid,这种情况下,下游都会创建一个process 对象来处理数据不?
> 如果这样的话,是不是没多久就会oom呢?
>
> 大家有熟悉这块相关flink 源码不?求指导,想自己观察下。
>
> Best Regards!