[
https://issues.apache.org/jira/browse/FLINK-3951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15341749#comment-15341749
]
ASF GitHub Bot commented on FLINK-3951:
---------------------------------------
Github user tillrohrmann commented on a diff in the pull request:
https://github.com/apache/flink/pull/2112#discussion_r67866757
--- Diff:
flink-core/src/main/java/org/apache/flink/metrics/HistogramStatistics.java ---
@@ -0,0 +1,135 @@
+/*
+ * 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.metrics;
+
+import org.apache.flink.annotation.PublicEvolving;
+
+/**
+ * Histogram statistics represent the current snapshot of elements
recorded in the histogram.
+ *
+ * The histogram statistics allow to calculate values for quantiles, the
mean, the standard
+ * deviation, the minimum and the maximum.
+ */
+@PublicEvolving
+public abstract class HistogramStatistics {
+
+ /**
+ * Returns the value for the given quantile based on the represented
histogram statistics.
+ *
+ * @param quantile Quantile to calculate the value for
+ * @return Value for the given quantile
+ */
+ public abstract double getValue(double quantile);
+
+ /**
+ * Returns the elements of the statistics' sample
+ *
+ * @return Elements of the statistics' sample
+ */
+ public abstract long[] getValues();
+
+ /**
+ * Returns the size of the statistics' sample
+ *
+ * @return Size of the statistics' sample
+ */
+ public abstract int size();
+
+ /**
+ * Returns the mean of the histogram values.
+ *
+ * @return Mean of the histogram values
+ */
+ public abstract double getMean();
+
+ /**
+ * Returns the standard deviation of the distribution reflected by the
histogram statistics.
+ *
+ * @return Standard deviation of histogram distribution
+ */
+ public abstract double getStdDev();
+
+ /**
+ * Returns the maximum value of the histogram.
+ *
+ * @return Maximum value of the histogram
+ */
+ public abstract long getMax();
+
+ /**
+ * Returns the minimum value of the histogram.
+ *
+ * @return Minimum value of the histogram
+ */
+ public abstract long getMin();
+
+ /**
+ * Returns the 50th percentile.
+ *
+ * @return 50th percentile
+ */
+ public double getMedian() {
+ return getValue(0.5);
+ }
+
+ /**
+ * Returns the 75th percentile.
+ *
+ * @return 75th percentile
+ */
+ public double get75thPercentile() {
+ return getValue(0.75);
+ }
+
+ /**
+ * Returns the 95th percentile.
+ *
+ * @return 95th percentile
+ */
+ public double get95thPercentile() {
+ return getValue(0.95);
+ }
+
+ /**
+ * Returns the 98th percentile.
+ *
+ * @return 98th percentile
+ */
+ public double get98thPercentile() {
+ return getValue(0.98);
+ }
+
+ /**
+ * Returns the 99th percentile.
+ *
+ * @return 99th percentile
+ */
+ public double get99thPercentile() {
--- End diff --
We don't need them strictly. However, these quantiles are usually the
quantiles people are most interested in. Therefore, I would keep them as
convenience functions for the user. Since they are implemented in the abstract
class, they don't inflict higher implementation costs.
> Add Histogram Metric Type
> -------------------------
>
> Key: FLINK-3951
> URL: https://issues.apache.org/jira/browse/FLINK-3951
> Project: Flink
> Issue Type: Sub-task
> Components: Core
> Reporter: Stephan Ewen
> Assignee: Till Rohrmann
> Fix For: 1.1.0
>
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)