generic tuple api change, quantiles null from empty sketch
diff --git a/pom.xml b/pom.xml
index 33fdbee..77a5734 100644
--- a/pom.xml
+++ b/pom.xml
@@ -152,7 +152,7 @@
<dependency>
<groupId>com.yahoo.datasketches</groupId>
<artifactId>sketches-core</artifactId>
- <version>0.10.3</version>
+ <version>0.11.0</version>
</dependency>
<!-- Hive Dependencies (provided scope) -->
diff --git a/src/main/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDF.java b/src/main/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDF.java
index 6ab0104..937aaa6 100644
--- a/src/main/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDF.java
+++ b/src/main/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDF.java
@@ -36,7 +36,9 @@
public List<Double> evaluate(final BytesWritable serializedSketch, final Double... splitPoints) {
if (serializedSketch == null) { return null; }
final DoublesSketch sketch = DoublesSketch.wrap(Memory.wrap(serializedSketch.getBytes()));
- return Util.primitivesToList(sketch.getPMF(Util.objectsToPrimitives(splitPoints)));
+ final double[] pmf = sketch.getPMF(Util.objectsToPrimitives(splitPoints));
+ if (pmf == null) { return null; }
+ return Util.primitivesToList(pmf);
}
}
diff --git a/src/main/java/com/yahoo/sketches/hive/quantiles/GetPmfFromStringsSketchUDF.java b/src/main/java/com/yahoo/sketches/hive/quantiles/GetPmfFromStringsSketchUDF.java
index 6b1571b..d8e4793 100644
--- a/src/main/java/com/yahoo/sketches/hive/quantiles/GetPmfFromStringsSketchUDF.java
+++ b/src/main/java/com/yahoo/sketches/hive/quantiles/GetPmfFromStringsSketchUDF.java
@@ -42,7 +42,9 @@
Comparator.naturalOrder(),
new ArrayOfStringsSerDe()
);
- return Util.primitivesToList(sketch.getPMF(splitPoints));
+ final double[] pmf = sketch.getPMF(splitPoints);
+ if (pmf == null) { return null; }
+ return Util.primitivesToList(pmf);
}
}
diff --git a/src/main/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDF.java b/src/main/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDF.java
index d6f8d2f..68b43dd 100644
--- a/src/main/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDF.java
+++ b/src/main/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDF.java
@@ -50,7 +50,9 @@
public List<Double> evaluate(final BytesWritable serializedSketch, final int number) {
if (serializedSketch == null) { return null; }
final DoublesSketch sketch = DoublesSketch.wrap(Memory.wrap(serializedSketch.getBytes()));
- return Util.primitivesToList(sketch.getQuantiles(number));
+ final double[] quantiles = sketch.getQuantiles(number);
+ if (quantiles == null) { return null; }
+ return Util.primitivesToList(quantiles);
}
}
diff --git a/src/main/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromStringsSketchUDF.java b/src/main/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromStringsSketchUDF.java
index a6fddea..a57ba53 100644
--- a/src/main/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromStringsSketchUDF.java
+++ b/src/main/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromStringsSketchUDF.java
@@ -61,7 +61,9 @@
Comparator.naturalOrder(),
new ArrayOfStringsSerDe()
);
- return Arrays.asList(sketch.getQuantiles(number));
+ final String[] quantiles = sketch.getQuantiles(number);
+ if (quantiles == null) { return null; }
+ return Arrays.asList(quantiles);
}
}
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummarySketchUDAF.java b/src/main/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummarySketchUDAF.java
index 91d8b4b..03cd8df 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummarySketchUDAF.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummarySketchUDAF.java
@@ -13,8 +13,12 @@
import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector.PrimitiveCategory;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.DoubleSummaryFactory;
+import com.yahoo.sketches.tuple.DoubleSummarySetOperations;
+import com.yahoo.sketches.tuple.SummaryDeserializer;
import com.yahoo.sketches.tuple.SummaryFactory;
+import com.yahoo.sketches.tuple.SummarySetOperations;
/**
* This simple implementation is to give an example of a concrete UDAF based on the abstract
@@ -50,14 +54,28 @@
static class DataToDoubleSummarySketchEvaluator extends DataToSketchEvaluator<Double, DoubleSummary> {
+ private static final SummaryDeserializer<DoubleSummary> SUMMARY_DESERIALIZER = new DoubleSummaryDeserializer();
+ private static final SummaryFactory<DoubleSummary> SUMMARY_FACTORY = new DoubleSummaryFactory();
+ private static final SummarySetOperations<DoubleSummary> SUMMARY_SET_OPS = new DoubleSummarySetOperations();
+
@Override
- protected SummaryFactory<DoubleSummary> getSummaryFactoryForIterate(final Object[] data) {
- return new DoubleSummaryFactory();
+ protected SummaryDeserializer<DoubleSummary> getSummaryDeserializer() {
+ return SUMMARY_DESERIALIZER;
}
@Override
- protected SummaryFactory<DoubleSummary> getSummaryFactoryForMerge(final Object data) {
- return new DoubleSummaryFactory();
+ protected SummaryFactory<DoubleSummary> getSummaryFactory(final Object[] data) {
+ return SUMMARY_FACTORY;
+ }
+
+ @Override
+ protected SummarySetOperations<DoubleSummary> getSummarySetOperationsForIterate(final Object[] data) {
+ return SUMMARY_SET_OPS;
+ }
+
+ @Override
+ protected SummarySetOperations<DoubleSummary> getSummarySetOperationsForMerge(final Object data) {
+ return SUMMARY_SET_OPS;
}
}
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummaryWithModeSketchUDAF.java b/src/main/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummaryWithModeSketchUDAF.java
index 1d6670f..65daa0f 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummaryWithModeSketchUDAF.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummaryWithModeSketchUDAF.java
@@ -24,9 +24,13 @@
import org.apache.hadoop.io.Text;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.DoubleSummaryFactory;
+import com.yahoo.sketches.tuple.DoubleSummarySetOperations;
import com.yahoo.sketches.tuple.Sketch;
+import com.yahoo.sketches.tuple.SummaryDeserializer;
import com.yahoo.sketches.tuple.SummaryFactory;
+import com.yahoo.sketches.tuple.SummarySetOperations;
/**
* This is an example of a concrete UDAF based on the abstract DataToSketchUDAF if extra arguments
@@ -75,6 +79,8 @@
static class DataToDoubleSummaryWithModeSketchEvaluator
extends DataToSketchEvaluator<Double, DoubleSummary> {
+ private static final SummaryDeserializer<DoubleSummary> SUMMARY_DESERIALIZER =
+ new DoubleSummaryDeserializer();
private static final String SUMMARY_MODE_FIELD = "summaryMode";
private PrimitiveObjectInspector summaryModeInspector_;
private DoubleSummary.Mode summaryMode_;
@@ -83,6 +89,11 @@
summaryMode_ = DoubleSummary.Mode.Sum;
}
+ @Override
+ protected SummaryDeserializer<DoubleSummary> getSummaryDeserializer() {
+ return SUMMARY_DESERIALIZER;
+ }
+
// need to add summary mode
@Override
public ObjectInspector init(final Mode mode, final ObjectInspector[] inspectors) throws HiveException {
@@ -108,7 +119,7 @@
}
@Override
- protected SummaryFactory<DoubleSummary> getSummaryFactoryForIterate(final Object[] data) {
+ protected SummaryFactory<DoubleSummary> getSummaryFactory(final Object[] data) {
if (summaryModeInspector_ != null) {
summaryMode_ = DoubleSummary.Mode.valueOf(
PrimitiveObjectInspectorUtils.getString(data[4], summaryModeInspector_)
@@ -117,6 +128,16 @@
return new DoubleSummaryFactory(summaryMode_);
}
+ @Override
+ protected SummarySetOperations<DoubleSummary> getSummarySetOperationsForIterate(final Object[] data) {
+ if (summaryModeInspector_ != null) {
+ summaryMode_ = DoubleSummary.Mode.valueOf(
+ PrimitiveObjectInspectorUtils.getString(data[4], summaryModeInspector_)
+ );
+ }
+ return new DoubleSummarySetOperations(summaryMode_);
+ }
+
// need to add summary mode
@Override
public Object terminatePartial(final @SuppressWarnings("deprecation") AggregationBuffer buf)
@@ -134,10 +155,10 @@
}
@Override
- protected SummaryFactory<DoubleSummary> getSummaryFactoryForMerge(final Object data) {
+ protected SummarySetOperations<DoubleSummary> getSummarySetOperationsForMerge(final Object data) {
summaryMode_ = DoubleSummary.Mode.valueOf(((Text) intermediateInspector_.getStructFieldData(
data, intermediateInspector_.getStructFieldRef(SUMMARY_MODE_FIELD))).toString());
- return new DoubleSummaryFactory(summaryMode_);
+ return new DoubleSummarySetOperations(summaryMode_);
}
}
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/DataToSketchUDAF.java b/src/main/java/com/yahoo/sketches/hive/tuple/DataToSketchUDAF.java
index 74f511e..f48c9be 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/DataToSketchUDAF.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/DataToSketchUDAF.java
@@ -144,7 +144,7 @@
samplingProbability = PrimitiveObjectInspectorUtils.getFloat(data[3],
samplingProbabilityInspector_);
}
- state.init(nominalNumEntries, samplingProbability, getSummaryFactoryForIterate(data));
+ state.init(nominalNumEntries, samplingProbability, getSummaryFactory(data));
}
@SuppressWarnings("deprecation")
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToEstimatesUDF.java b/src/main/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToEstimatesUDF.java
index 47c1b3a..bfdbc34 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToEstimatesUDF.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToEstimatesUDF.java
@@ -14,9 +14,11 @@
import com.yahoo.memory.Memory;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.Sketch;
import com.yahoo.sketches.tuple.SketchIterator;
import com.yahoo.sketches.tuple.Sketches;
+import com.yahoo.sketches.tuple.SummaryDeserializer;
@Description(
name = "DoubleSummarySketchToEstimates",
@@ -29,6 +31,9 @@
+ " This estimate assumes that the DoubleSummary was used in the Sum mode.)")
public class DoubleSummarySketchToEstimatesUDF extends UDF {
+ private static final SummaryDeserializer<DoubleSummary> SUMMARY_DESERIALIZER =
+ new DoubleSummaryDeserializer();
+
/**
* Get estimates from a given Sketch<DoubleSummary>
* @param serializedSketch DoubleSummarySketch in a serialized binary form
@@ -37,7 +42,7 @@
public List<Double> evaluate(final BytesWritable serializedSketch) {
if (serializedSketch == null) { return null; }
final Sketch<DoubleSummary> sketch =
- Sketches.heapifySketch(Memory.wrap(serializedSketch.getBytes()));
+ Sketches.heapifySketch(Memory.wrap(serializedSketch.getBytes()), SUMMARY_DESERIALIZER);
double sum = 0;
final SketchIterator<DoubleSummary> it = sketch.iterator();
while (it.next()) {
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToPercentileUDF.java b/src/main/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToPercentileUDF.java
index d3989ff..3ac0e85 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToPercentileUDF.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToPercentileUDF.java
@@ -13,9 +13,11 @@
import com.yahoo.sketches.quantiles.DoublesSketch;
import com.yahoo.sketches.quantiles.UpdateDoublesSketch;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.Sketch;
import com.yahoo.sketches.tuple.SketchIterator;
import com.yahoo.sketches.tuple.Sketches;
+import com.yahoo.sketches.tuple.SummaryDeserializer;
@Description(
name = "DoubleSummarySketchToPercentile",
@@ -28,7 +30,9 @@
+ " distribution from the lower half)")
public class DoubleSummarySketchToPercentileUDF extends UDF {
- private static final int QUANTILES_SKETCH_SIZE = 1024;
+ private static final SummaryDeserializer<DoubleSummary> SUMMARY_DESERIALIZER =
+ new DoubleSummaryDeserializer();
+ private static final int QUANTILES_SKETCH_K = 1024;
/**
* Get percentile from a given Sketch<DoubleSummary>
@@ -42,8 +46,8 @@
throw new IllegalArgumentException("percentile must be between 0 and 100");
}
final Sketch<DoubleSummary> sketch =
- Sketches.heapifySketch(Memory.wrap(serializedSketch.getBytes()));
- final UpdateDoublesSketch qs = DoublesSketch.builder().setK(QUANTILES_SKETCH_SIZE).build();
+ Sketches.heapifySketch(Memory.wrap(serializedSketch.getBytes()), SUMMARY_DESERIALIZER);
+ final UpdateDoublesSketch qs = DoublesSketch.builder().setK(QUANTILES_SKETCH_K).build();
final SketchIterator<DoubleSummary> it = sketch.iterator();
while (it.next()) {
qs.update(it.getSummary().getValue());
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/SketchEvaluator.java b/src/main/java/com/yahoo/sketches/hive/tuple/SketchEvaluator.java
index e849488..2ccaa28 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/SketchEvaluator.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/SketchEvaluator.java
@@ -18,7 +18,9 @@
import com.yahoo.sketches.tuple.Sketch;
import com.yahoo.sketches.tuple.Sketches;
import com.yahoo.sketches.tuple.Summary;
+import com.yahoo.sketches.tuple.SummaryDeserializer;
import com.yahoo.sketches.tuple.SummaryFactory;
+import com.yahoo.sketches.tuple.SummarySetOperations;
abstract class SketchEvaluator<S extends Summary> extends GenericUDAFEvaluator {
@@ -29,12 +31,28 @@
protected StructObjectInspector intermediateInspector_;
/**
- * Get an instance of SummaryFactory possibly parameterized based on the original input array of objects.
- * Called once during the first call to iterate.
+ * Get an instance of SummaryDeserializer
+ * @return SummaryDeserializer
+ */
+ protected abstract SummaryDeserializer<S> getSummaryDeserializer();
+
+ /**
+ * Get an instance of SummaryFactory possibly parameterized
+ * based on the original input array of objects.
+ * Might be called once during the first call to iterate.
* @param data original input array of objects
* @return an instance of SummaryFactory
*/
- protected abstract SummaryFactory<S> getSummaryFactoryForIterate(Object[] data);
+ protected abstract SummaryFactory<S> getSummaryFactory(Object[] data);
+
+ /**
+ * Get an instance of SummarySetOperations possibly parameterized
+ * based on the original input array of objects.
+ * Might be called once during the first call to iterate.
+ * @param data original input array of objects
+ * @return an instance of SummarySetOperations
+ */
+ protected abstract SummarySetOperations<S> getSummarySetOperationsForIterate(Object[] data);
@Override
public Object terminatePartial(final @SuppressWarnings("deprecation") AggregationBuffer buf)
@@ -62,22 +80,23 @@
final BytesWritable serializedSketch =
(BytesWritable) intermediateInspector_.getStructFieldData(
data, intermediateInspector_.getStructFieldRef(SKETCH_FIELD));
- state.update(Sketches.heapifySketch(Memory.wrap(serializedSketch.getBytes())));
+ state.update(Sketches.heapifySketch(Memory.wrap(serializedSketch.getBytes()), getSummaryDeserializer()));
}
protected void initializeState(final UnionState<S> state, final Object data) {
final int nominalNumEntries = ((IntWritable) intermediateInspector_.getStructFieldData(
data, intermediateInspector_.getStructFieldRef(NOMINAL_NUM_ENTRIES_FIELD))).get();
- state.init(nominalNumEntries, getSummaryFactoryForMerge(data));
+ state.init(nominalNumEntries, getSummarySetOperationsForMerge(data));
}
/**
- * Get an instance of SummaryFactory possibly parameterized based on the intermediate data object.
- * Called once during the first call to merge.
+ * Get an instance of SummarySetOperations possibly parameterized
+ * based on the intermediate data object.
+ * Might be called once during the first call to merge.
* @param data intermediate data object
- * @return an instance of SummaryFactory
+ * @return an instance of SummarySetOperations
*/
- protected abstract SummaryFactory<S> getSummaryFactoryForMerge(Object data);
+ protected abstract SummarySetOperations<S> getSummarySetOperationsForMerge(Object data);
@Override
public Object terminate(final @SuppressWarnings("deprecation") AggregationBuffer buf)
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummarySketchUDAF.java b/src/main/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummarySketchUDAF.java
index 0fd9526..01d2ed8 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummarySketchUDAF.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummarySketchUDAF.java
@@ -9,8 +9,11 @@
import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
import com.yahoo.sketches.tuple.DoubleSummary;
-import com.yahoo.sketches.tuple.DoubleSummaryFactory;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
+import com.yahoo.sketches.tuple.DoubleSummarySetOperations;
+import com.yahoo.sketches.tuple.SummaryDeserializer;
import com.yahoo.sketches.tuple.SummaryFactory;
+import com.yahoo.sketches.tuple.SummarySetOperations;
/**
* This simple implementation is to give an example of a concrete UDAF based on the abstract
@@ -37,14 +40,27 @@
public static class UnionDoubleSummarySketchEvaluator extends UnionSketchEvaluator<DoubleSummary> {
+ private static final SummaryDeserializer<DoubleSummary> SUMMARY_DESERIALIZER = new DoubleSummaryDeserializer();
+ private static final SummarySetOperations<DoubleSummary> SUMMARY_SET_OPS = new DoubleSummarySetOperations();
+
@Override
- protected SummaryFactory<DoubleSummary> getSummaryFactoryForIterate(final Object[] data) {
- return new DoubleSummaryFactory();
+ protected SummaryDeserializer<DoubleSummary> getSummaryDeserializer() {
+ return SUMMARY_DESERIALIZER;
}
@Override
- protected SummaryFactory<DoubleSummary> getSummaryFactoryForMerge(final Object data) {
- return new DoubleSummaryFactory();
+ protected SummaryFactory<DoubleSummary> getSummaryFactory(final Object[] data) {
+ return null; // union never needs to create new instances
+ }
+
+ @Override
+ protected SummarySetOperations<DoubleSummary> getSummarySetOperationsForIterate(final Object[] data) {
+ return SUMMARY_SET_OPS;
+ }
+
+ @Override
+ protected SummarySetOperations<DoubleSummary> getSummarySetOperationsForMerge(final Object data) {
+ return SUMMARY_SET_OPS;
}
}
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummaryWithModeSketchUDAF.java b/src/main/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummaryWithModeSketchUDAF.java
index 10efccc..aa7c047 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummaryWithModeSketchUDAF.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummaryWithModeSketchUDAF.java
@@ -23,9 +23,13 @@
import org.apache.hadoop.io.Text;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.DoubleSummaryFactory;
+import com.yahoo.sketches.tuple.DoubleSummarySetOperations;
import com.yahoo.sketches.tuple.Sketch;
+import com.yahoo.sketches.tuple.SummaryDeserializer;
import com.yahoo.sketches.tuple.SummaryFactory;
+import com.yahoo.sketches.tuple.SummarySetOperations;
/**
* This is an example of a concrete UDAF based on the abstract UnionSketchUDAF if extra arguments
@@ -64,6 +68,8 @@
public static class UnionDoubleSummaryWithModeSketchEvaluator extends UnionSketchEvaluator<DoubleSummary> {
+ private static final SummaryDeserializer<DoubleSummary> SUMMARY_DESERIALIZER =
+ new DoubleSummaryDeserializer();
private static final String SUMMARY_MODE_FIELD = "summaryMode";
private PrimitiveObjectInspector summaryModeInspector_;
private DoubleSummary.Mode summaryMode_;
@@ -72,6 +78,11 @@
summaryMode_ = DoubleSummary.Mode.Sum;
}
+ @Override
+ protected SummaryDeserializer<DoubleSummary> getSummaryDeserializer() {
+ return SUMMARY_DESERIALIZER;
+ }
+
// need to add summary mode
@Override
public ObjectInspector init(final Mode mode, final ObjectInspector[] inspectors) throws HiveException {
@@ -97,13 +108,18 @@
}
@Override
- protected SummaryFactory<DoubleSummary> getSummaryFactoryForIterate(final Object[] data) {
+ protected SummaryFactory<DoubleSummary> getSummaryFactory(final Object[] data) {
+ return null; // union never needs to create new instances
+ }
+
+ @Override
+ protected SummarySetOperations<DoubleSummary> getSummarySetOperationsForIterate(final Object[] data) {
if (summaryModeInspector_ != null) {
summaryMode_ = DoubleSummary.Mode.valueOf(
PrimitiveObjectInspectorUtils.getString(data[2], summaryModeInspector_)
);
}
- return new DoubleSummaryFactory(summaryMode_);
+ return new DoubleSummarySetOperations(summaryMode_);
}
// need to add summary mode
@@ -123,10 +139,10 @@
}
@Override
- protected SummaryFactory<DoubleSummary> getSummaryFactoryForMerge(final Object data) {
+ protected SummarySetOperations<DoubleSummary> getSummarySetOperationsForMerge(final Object data) {
summaryMode_ = DoubleSummary.Mode.valueOf(((Text) intermediateInspector_.getStructFieldData(
data, intermediateInspector_.getStructFieldRef(SUMMARY_MODE_FIELD))).toString());
- return new DoubleSummaryFactory(summaryMode_);
+ return new DoubleSummarySetOperations(summaryMode_);
}
}
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/UnionSketchUDAF.java b/src/main/java/com/yahoo/sketches/hive/tuple/UnionSketchUDAF.java
index 3936e08..eeb259c 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/UnionSketchUDAF.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/UnionSketchUDAF.java
@@ -111,7 +111,7 @@
}
final byte[] serializedSketch = (byte[]) sketchInspector_.getPrimitiveJavaObject(data[0]);
if (serializedSketch == null) { return; }
- state.update(Sketches.heapifySketch(Memory.wrap(serializedSketch)));
+ state.update(Sketches.heapifySketch(Memory.wrap(serializedSketch), getSummaryDeserializer()));
}
protected void initializeState(final UnionState<S> state, final Object[] data) {
@@ -119,7 +119,7 @@
if (nominalNumEntriesInspector_ != null) {
nominalNumEntries = PrimitiveObjectInspectorUtils.getInt(data[1], nominalNumEntriesInspector_);
}
- state.init(nominalNumEntries, getSummaryFactoryForIterate(data));
+ state.init(nominalNumEntries, getSummarySetOperationsForIterate(data));
}
@SuppressWarnings("deprecation")
diff --git a/src/main/java/com/yahoo/sketches/hive/tuple/UnionState.java b/src/main/java/com/yahoo/sketches/hive/tuple/UnionState.java
index 305602d..0ca1624 100644
--- a/src/main/java/com/yahoo/sketches/hive/tuple/UnionState.java
+++ b/src/main/java/com/yahoo/sketches/hive/tuple/UnionState.java
@@ -7,7 +7,7 @@
import com.yahoo.sketches.tuple.Sketch;
import com.yahoo.sketches.tuple.Summary;
-import com.yahoo.sketches.tuple.SummaryFactory;
+import com.yahoo.sketches.tuple.SummarySetOperations;
import com.yahoo.sketches.tuple.Union;
class UnionState<S extends Summary> extends State<S> {
@@ -18,9 +18,9 @@
return union_ != null;
}
- void init(final int nominalNumEntries, final SummaryFactory<S> summaryFactory) {
+ void init(final int nominalNumEntries, final SummarySetOperations<S> summarySetOps) {
super.init(nominalNumEntries);
- union_ = new Union<S>(nominalNumEntries, summaryFactory);
+ union_ = new Union<S>(nominalNumEntries, summarySetOps);
}
void update(final Sketch<S> sketch) {
diff --git a/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDFTest.java b/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDFTest.java
index 52feedf..f9e67d0 100644
--- a/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDFTest.java
@@ -34,6 +34,13 @@
}
@Test
+ public void emptySketch() {
+ UpdateDoublesSketch sketch = DoublesSketch.builder().build();
+ List<Double> result = new GetPmfFromDoublesSketchUDF().evaluate(new BytesWritable(sketch.toByteArray()), 0.0);
+ Assert.assertNull(result);
+ }
+
+ @Test
public void normalCase() {
UpdateDoublesSketch sketch = DoublesSketch.builder().build();
sketch.update(1);
diff --git a/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromStringsSketchUDFTest.java b/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromStringsSketchUDFTest.java
index 163caba..f3b2dd0 100644
--- a/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromStringsSketchUDFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromStringsSketchUDFTest.java
@@ -40,6 +40,13 @@
}
@Test
+ public void emptySketch() {
+ ItemsSketch<String> sketch = ItemsSketch.getInstance(comparator);
+ List<Double> result = new GetPmfFromStringsSketchUDF().evaluate(new BytesWritable(sketch.toByteArray(serDe)), "a");
+ Assert.assertNull(result);
+ }
+
+ @Test
public void normalCase() {
ItemsSketch<String> sketch = ItemsSketch.getInstance(comparator);
sketch.update("a");
diff --git a/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDFTest.java b/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDFTest.java
index 99f671e..62b57a5 100644
--- a/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDFTest.java
@@ -47,9 +47,17 @@
Assert.assertEquals(result.get(2), 3.0);
}
+ @Test
+ public void evenlySpacedEmptySketch() {
+ UpdateDoublesSketch sketch = DoublesSketch.builder().build();
+ List<Double> result = new GetQuantilesFromDoublesSketchUDF().evaluate(new BytesWritable(sketch.toByteArray()), 1);
+ Assert.assertNull(result);
+ }
+
@Test(expectedExceptions = SketchesArgumentException.class)
public void evenlySpacedZero() {
UpdateDoublesSketch sketch = DoublesSketch.builder().build();
+ sketch.update(1);
new GetQuantilesFromDoublesSketchUDF().evaluate(new BytesWritable(sketch.toByteArray()), 0);
}
diff --git a/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromStringsSketchUDFTest.java b/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromStringsSketchUDFTest.java
index 7e91a28..257af1b 100644
--- a/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromStringsSketchUDFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromStringsSketchUDFTest.java
@@ -56,11 +56,19 @@
@Test(expectedExceptions = SketchesArgumentException.class)
public void evenlySpacedZero() {
ItemsSketch<String> sketch = ItemsSketch.getInstance(comparator);
+ sketch.update("a");
new GetQuantilesFromStringsSketchUDF()
.evaluate(new BytesWritable(sketch.toByteArray(serDe)), 0);
}
@Test
+ public void evenlySpacedEmptySketch() {
+ ItemsSketch<String> sketch = ItemsSketch.getInstance(comparator);
+ List<String> result = new GetQuantilesFromStringsSketchUDF().evaluate(new BytesWritable(sketch.toByteArray(serDe)), 1);
+ Assert.assertNull(result);
+ }
+
+ @Test
public void evenlySpacedNormalCase() {
ItemsSketch<String> sketch = ItemsSketch.getInstance(comparator);
sketch.update("a");
diff --git a/src/test/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummarySketchUDAFTest.java b/src/test/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummarySketchUDAFTest.java
index 5cf057e..16c2696 100644
--- a/src/test/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummarySketchUDAFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummarySketchUDAFTest.java
@@ -34,6 +34,7 @@
import com.yahoo.memory.Memory;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.DoubleSummaryFactory;
import com.yahoo.sketches.tuple.Sketch;
import com.yahoo.sketches.tuple.Sketches;
@@ -145,7 +146,8 @@
List<?> r = (List<?>) result;
Assert.assertEquals(r.size(), 2);
Assert.assertEquals(((IntWritable) r.get(0)).get(), DEFAULT_NOMINAL_ENTRIES);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(1)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(1)).getBytes()), new DoubleSummaryDeserializer());
Assert.assertFalse(resultSketch.isEstimationMode());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
}
@@ -170,7 +172,8 @@
List<?> r = (List<?>) result;
Assert.assertEquals(r.size(), 2);
Assert.assertEquals(((IntWritable) r.get(0)).get(), 32);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(1)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(1)).getBytes()), new DoubleSummaryDeserializer());
// because of sampling probability < 1
Assert.assertTrue(resultSketch.isEstimationMode());
Assert.assertEquals(resultSketch.getEstimate(), 2.0, 0.05);
@@ -209,7 +212,8 @@
List<?> r = (List<?>) result;
Assert.assertEquals(r.size(), 2);
Assert.assertEquals(((IntWritable) r.get(0)).get(), DEFAULT_NOMINAL_ENTRIES);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(1)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(1)).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
eval.reset(state);
@@ -247,7 +251,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
}
}
@@ -269,7 +274,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
eval.reset(state);
@@ -295,7 +301,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
// because of sampling probability < 1
Assert.assertTrue(resultSketch.isEstimationMode());
Assert.assertEquals(resultSketch.getEstimate(), 2.0, 0.05);
@@ -323,7 +330,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 10000.0, 10000 * 0.03);
Assert.assertTrue(resultSketch.getRetainedEntries() <= 4096, "retained entries: " + resultSketch.getRetainedEntries());
diff --git a/src/test/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummaryWithModeSketchUDAFTest.java b/src/test/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummaryWithModeSketchUDAFTest.java
index 137b50f..49bbdc1 100644
--- a/src/test/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummaryWithModeSketchUDAFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/tuple/DataToDoubleSummaryWithModeSketchUDAFTest.java
@@ -34,6 +34,7 @@
import com.yahoo.memory.Memory;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.DoubleSummaryFactory;
import com.yahoo.sketches.tuple.Sketch;
import com.yahoo.sketches.tuple.SketchIterator;
@@ -149,7 +150,8 @@
Assert.assertEquals(r.size(), 3);
Assert.assertEquals(((IntWritable) r.get(0)).get(), DEFAULT_NOMINAL_ENTRIES);
Assert.assertEquals(((Text) r.get(1)).toString(), DoubleSummary.Mode.Sum.toString());
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(2)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(2)).getBytes()), new DoubleSummaryDeserializer());
Assert.assertFalse(resultSketch.isEstimationMode());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
@@ -181,7 +183,8 @@
Assert.assertEquals(r.size(), 3);
Assert.assertEquals(((IntWritable) r.get(0)).get(), 32);
Assert.assertEquals(((Text) r.get(1)).toString(), DoubleSummary.Mode.Min.toString());
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(2)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(2)).getBytes()), new DoubleSummaryDeserializer());
// because of sampling probability < 1
Assert.assertTrue(resultSketch.isEstimationMode());
Assert.assertEquals(resultSketch.getEstimate(), 2.0, 0.05);
@@ -229,7 +232,8 @@
Assert.assertEquals(r.size(), 3);
Assert.assertEquals(((IntWritable) r.get(0)).get(), DEFAULT_NOMINAL_ENTRIES);
Assert.assertEquals(((Text) r.get(1)).toString(), DoubleSummary.Mode.Sum.toString());
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(2)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(2)).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -275,7 +279,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -303,7 +308,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -335,7 +341,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
// because of sampling probability < 1
Assert.assertTrue(resultSketch.isEstimationMode());
Assert.assertEquals(resultSketch.getEstimate(), 2.0, 0.05);
@@ -367,7 +374,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 10000.0, 10000 * 0.03);
Assert.assertTrue(resultSketch.getRetainedEntries() <= 4096, "retained entries: " + resultSketch.getRetainedEntries());
diff --git a/src/test/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToPercentileUDFTest.java b/src/test/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToPercentileUDFTest.java
index 7ce2f0f..bf5716b 100644
--- a/src/test/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToPercentileUDFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/tuple/DoubleSummarySketchToPercentileUDFTest.java
@@ -27,7 +27,7 @@
UpdatableSketch<Double, DoubleSummary> sketch = new UpdatableSketchBuilder<Double, DoubleSummary>(new DoubleSummaryFactory()).build();
Double result = new DoubleSummarySketchToPercentileUDF().evaluate(new BytesWritable(sketch.compact().toByteArray()), 0.0);
Assert.assertNotNull(result);
- Assert.assertEquals(result, Double.POSITIVE_INFINITY);
+ Assert.assertEquals(result, Double.NaN);
}
@Test
diff --git a/src/test/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummarySketchUDAFTest.java b/src/test/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummarySketchUDAFTest.java
index 825ccb2..929588d 100644
--- a/src/test/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummarySketchUDAFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummarySketchUDAFTest.java
@@ -28,6 +28,7 @@
import com.yahoo.memory.Memory;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.DoubleSummaryFactory;
import com.yahoo.sketches.tuple.Sketch;
import com.yahoo.sketches.tuple.Sketches;
@@ -118,7 +119,8 @@
List<?> r = (List<?>) result;
Assert.assertEquals(r.size(), 2);
Assert.assertEquals(((IntWritable) (r.get(0))).get(), DEFAULT_NOMINAL_ENTRIES);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) (r.get(1))).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) (r.get(1))).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
}
}
@@ -153,7 +155,8 @@
List<?> r = (List<?>) result;
Assert.assertEquals(r.size(), 2);
Assert.assertEquals(((IntWritable) (r.get(0))).get(), nomNumEntries);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) (r.get(1))).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) (r.get(1))).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
}
}
@@ -190,7 +193,8 @@
List<?> r = (List<?>) result;
Assert.assertEquals(r.size(), 2);
Assert.assertEquals(((IntWritable) (r.get(0))).get(), DEFAULT_NOMINAL_ENTRIES);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) (r.get(1))).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) (r.get(1))).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
eval.reset(state);
@@ -228,7 +232,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
}
}
@@ -256,7 +261,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
eval.reset(state);
@@ -292,7 +298,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0, 0.05);
eval.reset(state);
diff --git a/src/test/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummaryWithModeSketchUDAFTest.java b/src/test/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummaryWithModeSketchUDAFTest.java
index 0605e53..03b4b4a 100644
--- a/src/test/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummaryWithModeSketchUDAFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/tuple/UnionDoubleSummaryWithModeSketchUDAFTest.java
@@ -32,6 +32,7 @@
import com.yahoo.memory.Memory;
import com.yahoo.sketches.tuple.DoubleSummary;
+import com.yahoo.sketches.tuple.DoubleSummaryDeserializer;
import com.yahoo.sketches.tuple.DoubleSummaryFactory;
import com.yahoo.sketches.tuple.Sketch;
import com.yahoo.sketches.tuple.SketchIterator;
@@ -143,7 +144,8 @@
Assert.assertEquals(r.size(), 3);
Assert.assertEquals(((IntWritable) r.get(0)).get(), DEFAULT_NOMINAL_ENTRIES);
Assert.assertEquals(((Text) r.get(1)).toString(), DoubleSummary.Mode.Sum.toString());
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(2)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(2)).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -185,7 +187,8 @@
Assert.assertEquals(r.size(), 3);
Assert.assertEquals(((IntWritable) r.get(0)).get(), nomNumEntries);
Assert.assertEquals(((Text) r.get(1)).toString(), DoubleSummary.Mode.Max.toString());
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(2)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(2)).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -231,7 +234,8 @@
Assert.assertEquals(r.size(), 3);
Assert.assertEquals(((IntWritable) r.get(0)).get(), DEFAULT_NOMINAL_ENTRIES);
Assert.assertEquals(((Text) r.get(1)).toString(), DoubleSummary.Mode.Sum.toString());
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) r.get(2)).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) r.get(2)).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -277,7 +281,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -311,7 +316,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -353,7 +359,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {
@@ -395,7 +402,8 @@
Object result = eval.terminate(state);
Assert.assertNotNull(result);
Assert.assertTrue(result instanceof BytesWritable);
- Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(Memory.wrap(((BytesWritable) result).getBytes()));
+ Sketch<DoubleSummary> resultSketch = Sketches.heapifySketch(
+ Memory.wrap(((BytesWritable) result).getBytes()), new DoubleSummaryDeserializer());
Assert.assertEquals(resultSketch.getEstimate(), 2.0);
SketchIterator<DoubleSummary> it = resultSketch.iterator();
while (it.next()) {