[
https://issues.apache.org/jira/browse/BEAM-1276?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17546305#comment-17546305
]
Kenneth Knowles commented on BEAM-1276:
---------------------------------------
This issue has been migrated to https://github.com/apache/beam/issues/18187
> StateSpecs.combiningValue interface is very awkward to use
> ----------------------------------------------------------
>
> Key: BEAM-1276
> URL: https://issues.apache.org/jira/browse/BEAM-1276
> Project: Beam
> Issue Type: Bug
> Components: sdk-java-core
> Reporter: Daniel Mills
> Priority: P3
> Labels: Clarified
>
> Using StateSpecs.combiningValue with built in combiners is very verbose. For
> example, to keep a running sum of ints:
> {code}
> @StateId("count")
> private final StateSpec<Object, AccumulatorCombiningState<Integer, int[],
> Integer>> countSpec =
> StateSpecs.combiningValue(
> Sum.ofIntegers().getAccumulatorCoder(pipeline.getCoderRegistry(),
> VarIntCoder.of()), Sum.ofIntegers());
> {code}
> This involves getting a reference to the pipeline into the DoFn,
> guessing/finding the proper type parameters for Sum.ofIntegers(), and
> manually pulling the accumulator coder out.
> For combiners like Sum.ofIntegers() that have a fixed accumulator, the
> combiningValue call should be able to deduce that. Additionally, it would be
> nice to remove the type of the accumulator from the StateSpec object, since
> the user only needs the input and output types in their code.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)