You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2017/05/10 20:59:04 UTC

[jira] [Assigned] (CALCITE-1783) Support merge method in AggregateFunction

     [ https://issues.apache.org/jira/browse/CALCITE-1783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julian Hyde reassigned CALCITE-1783:
------------------------------------

    Assignee: James Xu  (was: Julian Hyde)

> Support merge method in AggregateFunction
> -----------------------------------------
>
>                 Key: CALCITE-1783
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1783
>             Project: Calcite
>          Issue Type: New Feature
>            Reporter: James Xu
>            Assignee: James Xu
>
> I was implementing the UDAF for BEAM SQL using Calcite, Since BEAM is used in big data processing where aggregate functions will be implemented using distributed algorithms. Then the `merge` method is a must to support UDAF in BEAM, the corresponding aggregator interface in BEAM is `CombineFn`:
> {code:java}
>   public abstract static class CombineFn<InputT, AccumT, OutputT>
>       extends AbstractGlobalCombineFn<InputT, AccumT, OutputT> {
>     /**
>      * Returns a new, mutable accumulator value, representing the accumulation of zero input values.
>      */
>     public abstract AccumT createAccumulator();
>     /**
>      * Adds the given input value to the given accumulator, returning the
>      * new accumulator value.
>      *
>      * <p>For efficiency, the input accumulator may be modified and returned.
>      */
>     public abstract AccumT addInput(AccumT accumulator, InputT input);
>     /**
>      * Returns an accumulator representing the accumulation of all the
>      * input values accumulated in the merging accumulators.
>      *
>      * <p>May modify any of the argument accumulators.  May return a
>      * fresh accumulator, or may return one of the (modified) argument
>      * accumulators.
>      */
>     public abstract AccumT mergeAccumulators(Iterable<AccumT> accumulators);
>     /**
>      * Returns the output value that is the result of combining all
>      * the input values represented by the given accumulator.
>      */
>     public abstract OutputT extractOutput(AccumT accumulator);
>   }
> {code}
> mergeAccumulators is the analogue in BEAM for `merge`.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)