[
https://issues.apache.org/jira/browse/FLINK-1293?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14229759#comment-14229759
]
ASF GitHub Bot commented on FLINK-1293:
---------------------------------------
Github user fhueske commented on a diff in the pull request:
https://github.com/apache/incubator-flink/pull/243#discussion_r21087046
--- Diff:
flink-java/src/main/java/org/apache/flink/api/java/aggregation/AggregationMapFinalUdf.java
---
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.api.java.aggregation;
+
+import org.apache.flink.api.common.functions.MapFunction;
+import org.apache.flink.api.java.tuple.Tuple;
+
+/**
+ * Map UDF that maps the intermediate result of an aggregation to the
+ * final result.
+ *
+ * <p>For simple aggregation functions the value in the respective tuple
+ * field is copied. For composite aggregations, the final aggregation value
+ * is computed. Fields holding group keys that are not requested by the
+ * user are dropped.
+ *
+ * @param <IN> Type of the intermediate tuple.
+ * @param <OUT> Aggregation output type.
+ */
+public class AggregationMapFinalUdf<IN extends Tuple, OUT extends Tuple>
extends AggregationUdfBase<OUT> implements MapFunction<IN, OUT>{
+ private static final long serialVersionUID = 6792518274017437410L;
+
+ private AggregationFunction<?, ?>[] functions;
+
+ public AggregationMapFinalUdf(AggregationFunction<?, ?>[] functions) {
+ super(functions.length);
+ this.functions = functions;
+ }
+
+ @Override
+ public OUT map(IN input) throws Exception {
+ OUT result = createResultTuple();
--- End diff --
Create the result tuple only once (in the constructor) and reuse it in all
map() invocations to reduce instantiation and GC overhead.
> Add support for out-of-place aggregations
> -----------------------------------------
>
> Key: FLINK-1293
> URL: https://issues.apache.org/jira/browse/FLINK-1293
> Project: Flink
> Issue Type: Improvement
> Components: Java API, Scala API
> Affects Versions: 0.7.0-incubating
> Reporter: Viktor Rosenfeld
> Assignee: Viktor Rosenfeld
> Priority: Minor
>
> Currently, the output of an aggregation is of the same type as the input.
> This restriction has to major drawbacks:
> 1. Every tuple field can only be used in one aggregation because the
> aggregations result is stored in the field.
> 2. Aggregations having a return type that is different from the input type,
> e.g., count or average, cannot be implemented.
> It would be nice to have the aggregation return any kind of tuple as a
> result, so the restrictions above no longer apply.
> See also:
> -
> https://github.com/stratosphere/stratosphere/wiki/Design-of-Aggregate-Operator
> -
> http://apache-flink-incubator-mailing-list-archive.1008284.n3.nabble.com/Hi-Aggregation-support-td2311.html
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)