All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yahoo.sketches.hive.quantiles.DoublesUnionState Maven / Gradle / Ivy

There is a newer version: 0.13.0
Show newest version
/*
 * Copyright 2016, Yahoo! Inc.
 * Licensed under the terms of the Apache License 2.0. See LICENSE file at the project root for terms.
 */

package com.yahoo.sketches.hive.quantiles;

import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator.AbstractAggregationBuffer;

import com.yahoo.memory.Memory;
import com.yahoo.sketches.quantiles.DoublesSketch;
import com.yahoo.sketches.quantiles.DoublesUnion;
import com.yahoo.sketches.quantiles.DoublesUnionBuilder;

class DoublesUnionState extends AbstractAggregationBuffer {

  private DoublesUnion union;

  // initializing is needed only in the first phase (iterate)
  void init(final int k) {
    final DoublesUnionBuilder unionBuilder = DoublesUnion.builder();
    if (k > 0) { unionBuilder.setMaxK(k); }
    union = unionBuilder.build();
  }

  boolean isInitialized() {
    return union != null;
  }

  void update(final double value) {
    if (union == null) {
      union = DoublesUnion.builder().build();
    }
    union.update(value);
  }

  void update(final byte[] serializedSketch) {
    final DoublesSketch incomingSketch = DoublesSketch.wrap(Memory.wrap(serializedSketch));
    if (union == null) {
      union = DoublesUnionBuilder.heapify(incomingSketch);
    } else {
      union.update(incomingSketch);
    }
  }

  public DoublesSketch getResult() {
    if (union == null) { return null; }
    return union.getResultAndReset();
  }

  void reset() {
    union = null;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy