[
https://issues.apache.org/jira/browse/BEAM-7567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17123937#comment-17123937
]
Kenneth Knowles commented on BEAM-7567:
---------------------------------------
This would eliminate the natural static validation of StateSpec. It is
explicitly against the goal of the annotation-based API. We should also offer a
purely programmatic API for DSL builders, but for end-users this would be a
regression.
> StateSpec should contain the state id
> -------------------------------------
>
> Key: BEAM-7567
> URL: https://issues.apache.org/jira/browse/BEAM-7567
> Project: Beam
> Issue Type: Improvement
> Components: sdk-java-core
> Reporter: Luke Cwik
> Priority: P2
> Labels: backwards-incompatible, stale-P2
> Fix For: 3.0.0
>
>
> In the Java SDK we currently ask users to define a state spec as:
> {code:java}
> new DoFn<KV<MyKey, MyValue>, KV<Integer, KV<MyKey, MyValue>>>() {
> // A state cell holding a single Integer per key+window
> @StateId("index")
> private final StateSpec<ValueState<Integer>> indexSpec =
> StateSpecs.value(VarIntCoder.of());
> @ProcessElement
> public void processElement(
> ProcessContext context,
> @StateId("index") ValueState<Integer> index) {
> int current = firstNonNull(index.read(), 0);
> context.output(KV.of(current, context.element()));
> index.write(current+1);
> }
> }
> {code}
> The suggestion is to move the @StateId into the StateSpec so the could would
> look like:
> {code:java}
> new DoFn<KV<MyKey, MyValue>, KV<Integer, KV<MyKey, MyValue>>>() {
> // A state cell holding a single Integer per key+window
> private final StateSpec<ValueState<Integer>> indexSpec =
> StateSpecs.value("index", VarIntCoder.of());
> @ProcessElement
> public void processElement(
> ProcessContext context,
> @StateId("index") ValueState<Integer> index) {
> int current = firstNonNull(index.read(), 0);
> context.output(KV.of(current, context.element()));
> index.write(current+1);
> }
> }
> {code}
> We should also remove the coder from the StateSpec hashCode and equals method.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)