Search in sources :

Example 16 with Family

use of com.yahoo.sketches.Family in project sketches-core by DataSketches.

the class UpdateSketch method wrap.

/**
  * Wrap takes the sketch image in Memory and refers to it directly. There is no data copying onto
  * the java heap. Only "Direct" Serialization Version 3 (i.e, OpenSource) sketches that have
  * been explicitly stored as direct objects can be wrapped.
  * An attempt to "wrap" earlier version sketches will result in a "heapified", normal
  * Java Heap version of the sketch where all data will be copied to the heap.
  * @param srcMem an image of a Sketch where the image seed hash matches the given seed hash.
  * <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>
  * @param seed <a href="{@docRoot}/resources/dictionary.html#seed">See Update Hash Seed</a>.
  * Compact sketches store a 16-bit hash of the seed, but not the seed itself.
  * @return a UpdateSketch backed by the given Memory
  */
public static UpdateSketch wrap(final WritableMemory srcMem, final long seed) {
    final int preLongs = srcMem.getByte(PREAMBLE_LONGS_BYTE) & 0X3F;
    final int serVer = srcMem.getByte(SER_VER_BYTE) & 0XFF;
    final int familyID = srcMem.getByte(FAMILY_BYTE) & 0XFF;
    final Family family = Family.idToFamily(familyID);
    if ((serVer == 3) && (preLongs == 3)) {
        return DirectQuickSelectSketch.writableWrap(srcMem, seed);
    } else {
        throw new SketchesArgumentException("Corrupted: " + family + " family image: must have SerVer = 3 and preLongs = 3");
    }
}
Also used : SketchesArgumentException(com.yahoo.sketches.SketchesArgumentException) Family(com.yahoo.sketches.Family)

Example 17 with Family

use of com.yahoo.sketches.Family in project sketches-core by DataSketches.

the class HeapQuickSelectSketch method initNewHeapInstance.

/**
   * Get a new sketch instance on the java heap.
   *
   * @param lgNomLongs <a href="{@docRoot}/resources/dictionary.html#lgNomLogs">See lgNomLongs</a>.
   * @param seed <a href="{@docRoot}/resources/dictionary.html#seed">See seed</a>
   * @param p <a href="{@docRoot}/resources/dictionary.html#p">See Sampling Probability, <i>p</i></a>
   * @param rf <a href="{@docRoot}/resources/dictionary.html#resizeFactor">See Resize Factor</a>
   * @param unionGadget true if this sketch is implementing the Union gadget function.
   * Otherwise, it is behaving as a normal QuickSelectSketch.
   * @return instance of this sketch
   */
static HeapQuickSelectSketch initNewHeapInstance(final int lgNomLongs, final long seed, final float p, final ResizeFactor rf, final boolean unionGadget) {
    //Choose family, preambleLongs
    final Family family;
    final int preambleLongs;
    if (unionGadget) {
        preambleLongs = Family.UNION.getMinPreLongs();
        family = Family.UNION;
    } else {
        preambleLongs = Family.QUICKSELECT.getMinPreLongs();
        family = Family.QUICKSELECT;
    }
    final HeapQuickSelectSketch hqss = new HeapQuickSelectSketch(lgNomLongs, seed, p, rf, preambleLongs, family);
    final int lgArrLongs = Util.startingSubMultiple(lgNomLongs + 1, rf, MIN_LG_ARR_LONGS);
    hqss.lgArrLongs_ = lgArrLongs;
    hqss.hashTableThreshold_ = setHashTableThreshold(lgNomLongs, lgArrLongs);
    hqss.curCount_ = 0;
    hqss.thetaLong_ = (long) (p * MAX_THETA_LONG_AS_DOUBLE);
    //other flags: bigEndian = readOnly = compact = ordered = false;
    hqss.empty_ = true;
    hqss.cache_ = new long[1 << lgArrLongs];
    return hqss;
}
Also used : Family(com.yahoo.sketches.Family)

Example 18 with Family

use of com.yahoo.sketches.Family in project sketches-core by DataSketches.

the class SetOperation method heapify.

/**
   * Heapify takes the SetOperation image in Memory and instantiates an on-heap
   * SetOperation using the given seed.
   * The resulting SetOperation will not retain any link to the source Memory.
   * @param srcMem an image of a SetOperation where the hash of the given seed matches the image seed hash.
   * <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>
   * @param seed <a href="{@docRoot}/resources/dictionary.html#seed">See Update Hash Seed</a>.
   * @return a Heap-based SetOperation from the given Memory
   */
public static SetOperation heapify(final Memory srcMem, final long seed) {
    final byte famID = srcMem.getByte(FAMILY_BYTE);
    final Family family = idToFamily(famID);
    switch(family) {
        case UNION:
            {
                return UnionImpl.heapifyInstance(srcMem, seed);
            }
        case INTERSECTION:
            {
                return IntersectionImpl.heapifyInstance(srcMem, seed);
            }
        default:
            {
                throw new SketchesArgumentException("SetOperation cannot heapify family: " + family.toString());
            }
    }
}
Also used : SketchesArgumentException(com.yahoo.sketches.SketchesArgumentException) Family(com.yahoo.sketches.Family) Family.idToFamily(com.yahoo.sketches.Family.idToFamily)

Aggregations

Family (com.yahoo.sketches.Family)18 SketchesArgumentException (com.yahoo.sketches.SketchesArgumentException)11 Family.idToFamily (com.yahoo.sketches.Family.idToFamily)6 ResizeFactor (com.yahoo.sketches.ResizeFactor)5 Test (org.testng.annotations.Test)2 Family.objectToFamily (com.yahoo.sketches.Family.objectToFamily)1