不同的算子能共用一个状态吗?

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

不同的算子能共用一个状态吗?

hl9902@126.com
Hi,all:
我定义了两个flatmap算子(op1和op2),op1里面定义了一个MapState变量,我想在op2里面直接用这个状态,可以吗?
我感觉是不行的,没有找到相关的api。请各位大佬帮忙明确一下。



[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: 不同的算子能共用一个状态吗?

Qi Kang
Hi,

Flink不支持算子共享状态。如果你的op1和op2是并行的,就只能利用外部存储间接地共享状态数据。如果是串行的(op2在op1的下游),也可以尝试考虑把op1产生的状态数据作为流元素发送到op2中去。希望对你有所帮助。


> On Nov 4, 2020, at 14:48, [hidden email] wrote:
>
> Hi,all:
> 我定义了两个flatmap算子(op1和op2),op1里面定义了一个MapState变量,我想在op2里面直接用这个状态,可以吗?
> 我感觉是不行的,没有找到相关的api。请各位大佬帮忙明确一下。
>
>
>
> [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Re: 不同的算子能共用一个状态吗?

hl9902@126.com
感谢。我这个场景中op1和op2是串行的,那只能把op1的状态也发到下游的op2。



[hidden email]
 
发件人: Qi Kang
发送时间: 2020-11-04 14:53
收件人: user-zh
主题: Re: 不同的算子能共用一个状态吗?
Hi,
 
Flink不支持算子共享状态。如果你的op1和op2是并行的,就只能利用外部存储间接地共享状态数据。如果是串行的(op2在op1的下游),也可以尝试考虑把op1产生的状态数据作为流元素发送到op2中去。希望对你有所帮助。
 
 
> On Nov 4, 2020, at 14:48, [hidden email] wrote:
>
> Hi,all:
> 我定义了两个flatmap算子(op1和op2),op1里面定义了一个MapState变量,我想在op2里面直接用这个状态,可以吗?
> 我感觉是不行的,没有找到相关的api。请各位大佬帮忙明确一下。
>
>
>
> [hidden email]
 
Reply | Threaded
Open this post in threaded view
|

Re: Re: 不同的算子能共用一个状态吗?

nobleyd
可以的话,使用ConnectedStream即可。
StreamA和StreamB连接之后的算子中定义2个MapState状态即可。

[hidden email] <[hidden email]> 于2020年11月4日周三 下午3:08写道:

> 感谢。我这个场景中op1和op2是串行的,那只能把op1的状态也发到下游的op2。
>
>
>
> [hidden email]
>
> 发件人: Qi Kang
> 发送时间: 2020-11-04 14:53
> 收件人: user-zh
> 主题: Re: 不同的算子能共用一个状态吗?
> Hi,
>
>
> Flink不支持算子共享状态。如果你的op1和op2是并行的,就只能利用外部存储间接地共享状态数据。如果是串行的(op2在op1的下游),也可以尝试考虑把op1产生的状态数据作为流元素发送到op2中去。希望对你有所帮助。
>
>
> > On Nov 4, 2020, at 14:48, [hidden email] wrote:
> >
> > Hi,all:
> > 我定义了两个flatmap算子(op1和op2),op1里面定义了一个MapState变量,我想在op2里面直接用这个状态,可以吗?
> > 我感觉是不行的,没有找到相关的api。请各位大佬帮忙明确一下。
> >
> >
> >
> > [hidden email]
>
>