Details
-
Improvement
-
Status: Resolved
-
P2
-
Resolution: Fixed
-
None
-
None
Description
When updating our Flink version to 1.2 we can use the new internal timer API for both the windowing and for wiring in the Beam user-facing Timer API.
By using the internal timer API we make operators rescalable, that is, we can change the parallelism of a running Beam on Flink job by performing a savepoint and then restarting with a different parallelism.
An InternalTimerService can be retrieved by a Flink operator (mostly in open() using:
/** * Returns a {@link InternalTimerService} that can be used to query current processing time * and event time and to set timers. An operator can have several timer services, where * each has its own namespace serializer. Timer services are differentiated by the string * key that is given when requesting them, if you call this method with the same key * multiple times you will get the same timer service instance in subsequent requests. * * <p>Timers are always scoped to a key, the currently active key of a keyed stream operation. * When a timer fires, this key will also be set as the currently active key. * * <p>Each timer has attached metadata, the namespace. Different timer services * can have a different namespace type. If you don't need namespace differentiation you * can use {@link VoidNamespaceSerializer} as the namespace serializer. * * @param name The name of the requested timer service. If no service exists under the given * name a new one will be created and returned. * @param namespaceSerializer {@code TypeSerializer} for the timer namespace. * @param triggerable The {@link Triggerable} that should be invoked when timers fire * * @param <N> The type of the timer namespace. */ public <N> InternalTimerService<N> getInternalTimerService( String name, TypeSerializer<N> namespaceSerializer, Triggerable<?, N> triggerable);
Attachments
Issue Links
- depends upon
-
BEAM-1393 Update Flink Runner to Flink 1.2.0
- Resolved