KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能

shizk233
Hi all,

请教一下,KeyedCoProcessFunction比较特殊,有两个输入,对应两个ProcessElement方法。
问题1:
如果在这两个Process方法中都对同一个MapState进行修改,是否会存在资源竞争的关系?
还是这两个方法是顺序执行的?

问题2:
虽然有不同的key,但函数只有一个实例,其中的MapState应该也是一个实例,那么不同key下的
Process过程是并发执行的还是顺序执行的,会竞争MapState资源吗?
Reply | Threaded
Open this post in threaded view
|

Re: KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能

Benchao Li-2
Hi,

问题1&2 都不存在多线程的问题。Flink底层来保证这些方法都是在同一个线程串行执行的。

shizk233 <[hidden email]> 于2020年8月20日周四 下午2:22写道:

> Hi all,
>
> 请教一下,KeyedCoProcessFunction比较特殊,有两个输入,对应两个ProcessElement方法。
> 问题1:
> 如果在这两个Process方法中都对同一个MapState进行修改,是否会存在资源竞争的关系?
> 还是这两个方法是顺序执行的?
>
> 问题2:
> 虽然有不同的key,但函数只有一个实例,其中的MapState应该也是一个实例,那么不同key下的
> Process过程是并发执行的还是顺序执行的,会竞争MapState资源吗?
>


--

Best,
Benchao Li
Reply | Threaded
Open this post in threaded view
|

回复: KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能

Cayden chen
hi, 你可以看下这个,讲的挺详细的&nbsp;https://blog.csdn.net/yuchuanchen/article/details/105677408


------------------&nbsp;原始邮件&nbsp;------------------
发件人:                                                                                                                        "user-zh"                                                                                    <[hidden email]&gt;;
发送时间:&nbsp;2020年8月20日(星期四) 下午4:39
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能



Hi,

问题1&amp;2 都不存在多线程的问题。Flink底层来保证这些方法都是在同一个线程串行执行的。

shizk233 <[hidden email]&gt; 于2020年8月20日周四 下午2:22写道:

&gt; Hi all,
&gt;
&gt; 请教一下,KeyedCoProcessFunction比较特殊,有两个输入,对应两个ProcessElement方法。
&gt; 问题1:
&gt; 如果在这两个Process方法中都对同一个MapState进行修改,是否会存在资源竞争的关系?
&gt; 还是这两个方法是顺序执行的?
&gt;
&gt; 问题2:
&gt; 虽然有不同的key,但函数只有一个实例,其中的MapState应该也是一个实例,那么不同key下的
&gt; Process过程是并发执行的还是顺序执行的,会竞争MapState资源吗?
&gt;


--

Best,
Benchao Li
Reply | Threaded
Open this post in threaded view
|

Re: KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能

shizk233
In reply to this post by Benchao Li-2
谢谢大佬解答。
想再问一下,在并发1的情况下,一个算子里的MapState应该只有一个实例,
那么数据流上的不同key(不是map里的hash key)是怎么保证只获取到对应的那部分map state数据呢?

按我的理解,按key分流后,每个子流应该是只有自己的state,但从算子实例考虑,好像只有1个state实例存在。

Benchao Li <[hidden email]> 于2020年8月20日周四 下午4:40写道:

> Hi,
>
> 问题1&2 都不存在多线程的问题。Flink底层来保证这些方法都是在同一个线程串行执行的。
>
> shizk233 <[hidden email]> 于2020年8月20日周四 下午2:22写道:
>
> > Hi all,
> >
> > 请教一下,KeyedCoProcessFunction比较特殊,有两个输入,对应两个ProcessElement方法。
> > 问题1:
> > 如果在这两个Process方法中都对同一个MapState进行修改,是否会存在资源竞争的关系?
> > 还是这两个方法是顺序执行的?
> >
> > 问题2:
> > 虽然有不同的key,但函数只有一个实例,其中的MapState应该也是一个实例,那么不同key下的
> > Process过程是并发执行的还是顺序执行的,会竞争MapState资源吗?
> >
>
>
> --
>
> Best,
> Benchao Li
>
Reply | Threaded
Open this post in threaded view
|

Re: KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能

shizk233
In reply to this post by Cayden chen
谢谢Cayden 我去看看

Cayden chen <[hidden email]> 于2020年8月20日周四 下午4:58写道:

> hi, 你可以看下这个,讲的挺详细的&nbsp;
> https://blog.csdn.net/yuchuanchen/article/details/105677408
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:
>                                                   "user-zh"
>                                                                     <
> [hidden email]&gt;;
> 发送时间:&nbsp;2020年8月20日(星期四) 下午4:39
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能
>
>
>
> Hi,
>
> 问题1&amp;2 都不存在多线程的问题。Flink底层来保证这些方法都是在同一个线程串行执行的。
>
> shizk233 <[hidden email]&gt; 于2020年8月20日周四 下午2:22写道:
>
> &gt; Hi all,
> &gt;
> &gt; 请教一下,KeyedCoProcessFunction比较特殊,有两个输入,对应两个ProcessElement方法。
> &gt; 问题1:
> &gt; 如果在这两个Process方法中都对同一个MapState进行修改,是否会存在资源竞争的关系?
> &gt; 还是这两个方法是顺序执行的?
> &gt;
> &gt; 问题2:
> &gt; 虽然有不同的key,但函数只有一个实例,其中的MapState应该也是一个实例,那么不同key下的
> &gt; Process过程是并发执行的还是顺序执行的,会竞争MapState资源吗?
> &gt;
>
>
> --
>
> Best,
> Benchao Li
Reply | Threaded
Open this post in threaded view
|

Re: KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能

Benchao Li-2
In reply to this post by shizk233
不同的key应该用的是同一个state的实例,但是state下面会处理不同的key对应的state,也就是key对于用户来说是透明的。
比如你用一个MapState,那就是约等于每个key都有一个Map实例,不同key之间是独立的。

shizk233 <[hidden email]> 于2020年8月20日周四 下午5:03写道:

> 谢谢大佬解答。
> 想再问一下,在并发1的情况下,一个算子里的MapState应该只有一个实例,
> 那么数据流上的不同key(不是map里的hash key)是怎么保证只获取到对应的那部分map state数据呢?
>
> 按我的理解,按key分流后,每个子流应该是只有自己的state,但从算子实例考虑,好像只有1个state实例存在。
>
> Benchao Li <[hidden email]> 于2020年8月20日周四 下午4:40写道:
>
> > Hi,
> >
> > 问题1&2 都不存在多线程的问题。Flink底层来保证这些方法都是在同一个线程串行执行的。
> >
> > shizk233 <[hidden email]> 于2020年8月20日周四 下午2:22写道:
> >
> > > Hi all,
> > >
> > > 请教一下,KeyedCoProcessFunction比较特殊,有两个输入,对应两个ProcessElement方法。
> > > 问题1:
> > > 如果在这两个Process方法中都对同一个MapState进行修改,是否会存在资源竞争的关系?
> > > 还是这两个方法是顺序执行的?
> > >
> > > 问题2:
> > > 虽然有不同的key,但函数只有一个实例,其中的MapState应该也是一个实例,那么不同key下的
> > > Process过程是并发执行的还是顺序执行的,会竞争MapState资源吗?
> > >
> >
> >
> > --
> >
> > Best,
> > Benchao Li
> >
>


--

Best,
Benchao Li
Reply | Threaded
Open this post in threaded view
|

Re: KeyedCoProcessFunction中的状态数据是否存在资源竞争的可能

shizk233
理解了!感谢🙏!

Benchao Li <[hidden email]> 于2020年8月20日周四 下午6:00写道:

> 不同的key应该用的是同一个state的实例,但是state下面会处理不同的key对应的state,也就是key对于用户来说是透明的。
> 比如你用一个MapState,那就是约等于每个key都有一个Map实例,不同key之间是独立的。
>
> shizk233 <[hidden email]> 于2020年8月20日周四 下午5:03写道:
>
> > 谢谢大佬解答。
> > 想再问一下,在并发1的情况下,一个算子里的MapState应该只有一个实例,
> > 那么数据流上的不同key(不是map里的hash key)是怎么保证只获取到对应的那部分map state数据呢?
> >
> > 按我的理解,按key分流后,每个子流应该是只有自己的state,但从算子实例考虑,好像只有1个state实例存在。
> >
> > Benchao Li <[hidden email]> 于2020年8月20日周四 下午4:40写道:
> >
> > > Hi,
> > >
> > > 问题1&2 都不存在多线程的问题。Flink底层来保证这些方法都是在同一个线程串行执行的。
> > >
> > > shizk233 <[hidden email]> 于2020年8月20日周四 下午2:22写道:
> > >
> > > > Hi all,
> > > >
> > > > 请教一下,KeyedCoProcessFunction比较特殊,有两个输入,对应两个ProcessElement方法。
> > > > 问题1:
> > > > 如果在这两个Process方法中都对同一个MapState进行修改,是否会存在资源竞争的关系?
> > > > 还是这两个方法是顺序执行的?
> > > >
> > > > 问题2:
> > > > 虽然有不同的key,但函数只有一个实例,其中的MapState应该也是一个实例,那么不同key下的
> > > > Process过程是并发执行的还是顺序执行的,会竞争MapState资源吗?
> > > >
> > >
> > >
> > > --
> > >
> > > Best,
> > > Benchao Li
> > >
> >
>
>
> --
>
> Best,
> Benchao Li
>