Hi Beam devs.

According to the Fn State API design doc[1], the state type
MultimapUserState is intended for supporting MapState/SetState. And the
implementation[2] for this state type is ready on the SDK harness side.
Each runner will be responsible for integrating it if they want to leverage
it.

Today Beam uses StateRequestHandlers to define handler interfaces for other
state types, e.g. MultimapSideInputHandler for
MultimapSideInput, BagUserStateHandler for BagUserState, etc.[3] This is
great since each runner can implement these handler interfaces then the Fn
state API integration is done.

In order to support MapState/SetState, I think we will need to provide
a MultimapUserStateHandler interface in StateRequestHandlers and allow the
runners to implement it.

What do you think?

Feel free to correct me if there is any incorrect understanding since I'm
new to the Beam world.

Btw, I saw Flink Python used MultimapSideInput to support MapState[4] but I
think this is not recommended since MultimapUserState is available today.
But please correct me if I'm wrong.


[1] https://s.apache.org/beam-fn-state-api-and-bundle-processing
<https://s.apache.org/beam-fn-state-api-and-bundle-processing>
[2] https://github.com/apache/beam/pull/15238
[3]
https://github.com/apache/beam/blob/master/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/state/StateRequestHandlers.java#L192
[4]
https://cwiki.apache.org/confluence/display/FLINK/FLIP-153%3A+Support+state+access+in+Python+DataStream+API
-- 
Thanks,
Alan

Reply via email to