Class WritableComparator

java.lang.Object
org.apache.hadoop.io.WritableComparator
All Implemented Interfaces:
Comparator, Configurable, RawComparator
Direct Known Subclasses:
KeyFieldBasedComparator, RecordComparator

@Public @Stable public class WritableComparator extends Object implements RawComparator, Configurable
A Comparator for WritableComparables.

This base implementation uses the natural ordering. To define alternate orderings, override compare(WritableComparable,WritableComparable).

One may optimize compare-intensive operations by overriding compare(byte[],int,int,byte[],int,int). Static utility methods are provided to assist in optimized implementations of this method.

  • Constructor Details

    • WritableComparator

      protected WritableComparator()
    • WritableComparator

      protected WritableComparator(Class<? extends WritableComparable> keyClass)
      Construct for a WritableComparable implementation.
      Parameters:
      keyClass - WritableComparable Class.
    • WritableComparator

      protected WritableComparator(Class<? extends WritableComparable> keyClass, boolean createInstances)
    • WritableComparator

      protected WritableComparator(Class<? extends WritableComparable> keyClass, Configuration conf, boolean createInstances)
  • Method Details

    • get

      public static WritableComparator get(Class<? extends WritableComparable> c)
      For backwards compatibility.
      Parameters:
      c - WritableComparable Type.
      Returns:
      WritableComparator.
    • get

      public static WritableComparator get(Class<? extends WritableComparable> c, Configuration conf)
      Get a comparator for a WritableComparable implementation.
      Parameters:
      c - class.
      conf - configuration.
      Returns:
      WritableComparator.
    • setConf

      public void setConf(Configuration conf)
      Description copied from interface: Configurable
      Set the configuration to be used by this object.
      Specified by:
      setConf in interface Configurable
      Parameters:
      conf - configuration to be used
    • getConf

      public Configuration getConf()
      Description copied from interface: Configurable
      Return the configuration used by this object.
      Specified by:
      getConf in interface Configurable
      Returns:
      Configuration
    • define

      public static void define(Class c, WritableComparator comparator)
      Register an optimized comparator for a WritableComparable implementation. Comparators registered with this method must be thread-safe.
      Parameters:
      c - class.
      comparator - WritableComparator.
    • getKeyClass

      public Class<? extends WritableComparable> getKeyClass()
      Returns the WritableComparable implementation class.
      Returns:
      WritableComparable.
    • newKey

      public WritableComparable newKey()
      Construct a new WritableComparable instance.
      Returns:
      WritableComparable.
    • compare

      public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2)
      Optimization hook. Override this to make SequenceFile.Sorter's scream.

      The default implementation reads the data into two WritableComparables (using Writable.readFields(DataInput), then calls compare(WritableComparable,WritableComparable).

      Specified by:
      compare in interface RawComparator
      Parameters:
      b1 - The first byte array.
      s1 - The position index in b1. The object under comparison's starting index.
      l1 - The length of the object in b1.
      b2 - The second byte array.
      s2 - The position index in b2. The object under comparison's starting index.
      l2 - The length of the object under comparison in b2.
      Returns:
      An integer result of the comparison.
    • compare

      public int compare(WritableComparable a, WritableComparable b)
      Compare two WritableComparables. The default implementation uses the natural ordering, calling Comparable.compareTo(Object).
      Parameters:
      a - the first object to be compared.
      b - the second object to be compared.
      Returns:
      compare result.
    • compare

      public int compare(Object a, Object b)
      Compare two Object.
      Specified by:
      compare in interface Comparator
      Parameters:
      a - the first object to be compared.
      b - the second object to be compared.
      Returns:
      compare result.
    • compareBytes

      public static int compareBytes(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2)
      Lexicographic order of binary data.
      Parameters:
      b1 - b1.
      s1 - s1.
      l1 - l1.
      b2 - b2.
      s2 - s2.
      l2 - l2.
      Returns:
      compare bytes.
    • hashBytes

      public static int hashBytes(byte[] bytes, int offset, int length)
      Compute hash for binary data.
      Parameters:
      bytes - bytes.
      offset - offset.
      length - length.
      Returns:
      hash for binary data.
    • hashBytes

      public static int hashBytes(byte[] bytes, int length)
      Compute hash for binary data.
      Parameters:
      bytes - bytes.
      length - length.
      Returns:
      hash for binary data.
    • readUnsignedShort

      public static int readUnsignedShort(byte[] bytes, int start)
      Parse an unsigned short from a byte array.
      Parameters:
      bytes - bytes.
      start - start.
      Returns:
      unsigned short from a byte array
    • readInt

      public static int readInt(byte[] bytes, int start)
      Parse an integer from a byte array.
      Parameters:
      bytes - bytes.
      start - start.
      Returns:
      integer from a byte array
    • readFloat

      public static float readFloat(byte[] bytes, int start)
      Parse a float from a byte array.
      Parameters:
      bytes - bytes.
      start - start.
      Returns:
      float from a byte array
    • readLong

      public static long readLong(byte[] bytes, int start)
      Parse a long from a byte array.
      Parameters:
      bytes - bytes.
      start - start.
      Returns:
      long from a byte array
    • readDouble

      public static double readDouble(byte[] bytes, int start)
      Parse a double from a byte array.
      Parameters:
      bytes - bytes.
      start - start.
      Returns:
      double from a byte array.
    • readVLong

      public static long readVLong(byte[] bytes, int start) throws IOException
      Reads a zero-compressed encoded long from a byte array and returns it.
      Parameters:
      bytes - byte array with decode long
      start - starting index
      Returns:
      deserialized long
      Throws:
      IOException - raised on errors performing I/O.
    • readVInt

      public static int readVInt(byte[] bytes, int start) throws IOException
      Reads a zero-compressed encoded integer from a byte array and returns it.
      Parameters:
      bytes - byte array with the encoded integer
      start - start index
      Returns:
      deserialized integer
      Throws:
      IOException - raised on errors performing I/O.