[
https://issues.apache.org/jira/browse/FLINK-2626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14733351#comment-14733351
]
ASF GitHub Bot commented on FLINK-2626:
---------------------------------------
Github user HuangWHWHW commented on a diff in the pull request:
https://github.com/apache/flink/pull/1096#discussion_r38839459
--- Diff:
flink-core/src/main/java/org/apache/flink/api/common/accumulators/AverageAccumulator.java
---
@@ -0,0 +1,98 @@
+/*
+ * 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.common.accumulators;
+
+/**
+ * An accumulator that get the average values.
+ * Input can be {@code long}, {@code integer}, {@code double} as the
result is {@code double}.
+ */
+public class AverageAccumulator implements SimpleAccumulator <Double> {
+
+ private double localValue = 0;
+ private long count = 0;
+
+ @Override
+ public void add(Double value) {
+ this.count++;
+ this.localValue += value;
+ }
+
+ public void add(double value) {
+ this.count++;
+ this.localValue += value;
+ }
+
+ public void add(Long value) {
--- End diff --
I`m not quite sure.
Just the same as the class LongCounter .
You can see the code following:
public class LongCounter implements SimpleAccumulator<Long> {
private static final long serialVersionUID = 1L;
private long localValue = 0;
/**
* Consider using {@link #add(long)} instead for primitive long values
*/
@Override
public void add(Long value) {
this.localValue += value;
}
public void add(long value){
this.localValue += value;
}
@Override
public Long getLocalValue() {
return this.localValue;
}
@Override
public void merge(Accumulator<Long, Long> other) {
this.localValue += other.getLocalValue();
}
@Override
public void resetLocal() {
this.localValue = 0;
}
@Override
public LongCounter clone() {
LongCounter result = new LongCounter();
result.localValue = localValue;
return result;
}
@Override
public String toString() {
return "LongCounter " + this.localValue;
}
}
> Add a AverageAccumulator for FLINK-Accumulator
> ----------------------------------------------
>
> Key: FLINK-2626
> URL: https://issues.apache.org/jira/browse/FLINK-2626
> Project: Flink
> Issue Type: New Feature
> Components: Core
> Affects Versions: 0.10
> Reporter: Huang Wei
> Fix For: 0.10
>
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> Add a AverageAccumulator for Flink-Accumulator to calculate the average of
> values.
> The feature is like Storm-MultiReducedMetric.
> Feature in detail:
> 1.This class is named AverageAccumulator(any suggestion? I`m not good at
> English name) and implements SimpleAccumulator.
> 2.This class support long, integer and double input.
> 3.This class will return a double value as the average when the method
> getLocalValue() called.
> 4.Member method description:
> * add():
> A variety of add() method to support different inputs(e.g. Double, double,
> Long, long, Integer, int).
> It will add the input value and make the count + 1 each time.
> * public Double getLocalValue():
> To return the sum of value dividing count as average and the result will be
> "double".
> * public void resetLocal():
> To reset the value and count.
> It won`t be called automatically and it will be better to call this every
> time the getLocalValue() method called.
> * public void merge(Accumulator<Double, Double> other):
> To merge another accumulator(only support AverageAccumulator).
> * public AverageAccumulator clone():
> To return the whole current AverageAccumulator class.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)