You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by fj...@apache.org on 2019/01/17 22:10:01 UTC

[incubator-druid] branch master updated: datasketches quantiles module - implemented makeAggregateCombiner (#6882)

This is an automated email from the ASF dual-hosted git repository.

fjy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 161dac1  datasketches quantiles module - implemented makeAggregateCombiner (#6882)
161dac1 is described below

commit 161dac1d2380cfe2a7742447dc5b77c8dccf6ffb
Author: Alexander Saydakov <sa...@oath.com>
AuthorDate: Thu Jan 17 14:09:55 2019 -0800

    datasketches quantiles module - implemented makeAggregateCombiner (#6882)
    
    * implemented makeAggregateCombiner
    
    * fixed import order
---
 .../quantiles/DoublesSketchAggregatorFactory.java  | 39 ++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java
index 80f286b..4b28e26 100644
--- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java
+++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java
@@ -25,17 +25,20 @@ import com.yahoo.sketches.Util;
 import com.yahoo.sketches.quantiles.DoublesSketch;
 import com.yahoo.sketches.quantiles.DoublesUnion;
 import org.apache.druid.java.util.common.IAE;
+import org.apache.druid.query.aggregation.AggregateCombiner;
 import org.apache.druid.query.aggregation.Aggregator;
 import org.apache.druid.query.aggregation.AggregatorFactory;
 import org.apache.druid.query.aggregation.AggregatorFactoryNotMergeableException;
 import org.apache.druid.query.aggregation.AggregatorUtil;
 import org.apache.druid.query.aggregation.BufferAggregator;
+import org.apache.druid.query.aggregation.ObjectAggregateCombiner;
 import org.apache.druid.query.cache.CacheKeyBuilder;
 import org.apache.druid.segment.ColumnSelectorFactory;
 import org.apache.druid.segment.ColumnValueSelector;
 import org.apache.druid.segment.NilColumnValueSelector;
 import org.apache.druid.segment.column.ValueType;
 
+import javax.annotation.Nullable;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -138,6 +141,42 @@ public class DoublesSketchAggregatorFactory extends AggregatorFactory
   }
 
   @Override
+  public AggregateCombiner makeAggregateCombiner()
+  {
+    return new ObjectAggregateCombiner<DoublesSketch>()
+    {
+      private final DoublesUnion union = DoublesUnion.builder().setMaxK(k).build();
+
+      @Override
+      public void reset(final ColumnValueSelector selector)
+      {
+        union.reset();
+        fold(selector);
+      }
+
+      @Override
+      public void fold(final ColumnValueSelector selector)
+      {
+        final DoublesSketch sketch = (DoublesSketch) selector.getObject();
+        union.update(sketch);
+      }
+
+      @Nullable
+      @Override
+      public DoublesSketch getObject()
+      {
+        return union.getResult();
+      }
+
+      @Override
+      public Class<DoublesSketch> classOfObject()
+      {
+        return DoublesSketch.class;
+      }
+    };
+  }
+
+  @Override
   @JsonProperty
   public String getName()
   {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org