There is no suitable way to get the CurrentKey.
 I think using StepContext.timerInternals() and StepContext.stateInternals() is 
better.
best,
JingsongLee
------------------------------------------------------------------From:Thomas 
Weise <t...@apache.org>Time:2017 Apr 6 (Thu) 12:45To:dev 
<dev@beam.apache.org>Subject:StatefulDoFnRunner
Hi,

While working on the support for splittable DoFn, I see a few cases where
the DoFn runner classes slightly complicate reuse across elements (or make
it a bit awkward to implement for the runner).

StateInternalsStateCleaner and TimeInternalsCleanupTimer take xxxInternals
instances. But since those are key specific, the runner writer has to
perform acrobatics to flip the key on these internal instances on a per
element basis (to avoid having to recreate the other objects that refer to
them).

Would it be possible to instead use the factory and retrieve the internals
by key? The runner then has the choice to optimize as needed. In general, I
think it would be nice if the processing context related classes are
designed so that they promote reuse of object instances across elements and
bundles and minimize object creation on a per key basis?

Thanks,
Thomas

Reply via email to