Class PrivateCellUtil.TagRewriteCell

java.lang.Object
org.apache.hadoop.hbase.PrivateCellUtil.TagRewriteCell
All Implemented Interfaces:
Cell, ExtendedCell, HeapSize, RawCell
Direct Known Subclasses:
PrivateCellUtil.ValueAndTagRewriteCell
Enclosing class:
PrivateCellUtil

static class PrivateCellUtil.TagRewriteCell extends Object implements ExtendedCell
This can be used when a Cell has to change with addition/removal of one or more tags. This is an efficient way to do so in which only the tags bytes part need to recreated and copied. All other parts, refer to the original Cell.
  • Field Details

  • Constructor Details

    • TagRewriteCell

      public TagRewriteCell(Cell cell, byte[] tags)
      Construct a TagRewriteCell
      Parameters:
      cell - The original Cell which it rewrites
      tags - the tags bytes. The array suppose to contain the tags bytes alone.
  • Method Details

    • getRowArray

      public byte[] getRowArray()
      Description copied from interface: Cell
      Contiguous raw bytes that may start at any index in the containing array. Max length is Short.MAX_VALUE which is 32,767 bytes.
      Specified by:
      getRowArray in interface Cell
      Returns:
      The array containing the row bytes.
    • getRowOffset

      public int getRowOffset()
      Description copied from interface: Cell
      Returns Array index of first row byte
      Specified by:
      getRowOffset in interface Cell
    • getRowLength

      public short getRowLength()
      Description copied from interface: Cell
      Returns Number of row bytes. Must be < rowArray.length - offset.
      Specified by:
      getRowLength in interface Cell
    • getFamilyArray

      public byte[] getFamilyArray()
      Description copied from interface: Cell
      Contiguous bytes composed of legal HDFS filename characters which may start at any index in the containing array. Max length is Byte.MAX_VALUE, which is 127 bytes.
      Specified by:
      getFamilyArray in interface Cell
      Returns:
      the array containing the family bytes.
    • getFamilyOffset

      public int getFamilyOffset()
      Description copied from interface: Cell
      Returns Array index of first family byte
      Specified by:
      getFamilyOffset in interface Cell
    • getFamilyLength

      public byte getFamilyLength()
      Description copied from interface: Cell
      Returns Number of family bytes. Must be < familyArray.length - offset.
      Specified by:
      getFamilyLength in interface Cell
    • getQualifierArray

      public byte[] getQualifierArray()
      Description copied from interface: Cell
      Contiguous raw bytes that may start at any index in the containing array.
      Specified by:
      getQualifierArray in interface Cell
      Returns:
      The array containing the qualifier bytes.
    • getQualifierOffset

      public int getQualifierOffset()
      Description copied from interface: Cell
      Returns Array index of first qualifier byte
      Specified by:
      getQualifierOffset in interface Cell
    • getQualifierLength

      public int getQualifierLength()
      Description copied from interface: Cell
      Returns Number of qualifier bytes. Must be < qualifierArray.length - offset.
      Specified by:
      getQualifierLength in interface Cell
    • getTimestamp

      public long getTimestamp()
      Description copied from interface: Cell
      Return a long value representing time at which this cell was "Put" into the row. Typically represents the time of insertion, but can be any value from 0 to Long.MAX_VALUE.
      Specified by:
      getTimestamp in interface Cell
    • getTypeByte

      public byte getTypeByte()
      Description copied from interface: ExtendedCell
      Returns The byte representation of the KeyValue.TYPE of this cell: one of Put, Delete, etc
      Specified by:
      getTypeByte in interface Cell
      Specified by:
      getTypeByte in interface ExtendedCell
    • getSequenceId

      public long getSequenceId()
      Description copied from interface: ExtendedCell
      A region-specific unique monotonically increasing sequence ID given to each Cell. It always exists for cells in the memstore but is not retained forever. It will be kept for HConstants.KEEP_SEQID_PERIOD days, but generally becomes irrelevant after the cell's row is no longer involved in any operations that require strict consistency.
      Specified by:
      getSequenceId in interface Cell
      Specified by:
      getSequenceId in interface ExtendedCell
      Returns:
      seqId (always > 0 if exists), or 0 if it no longer exists
    • getValueArray

      public byte[] getValueArray()
      Description copied from interface: Cell
      Contiguous raw bytes that may start at any index in the containing array. Max length is Integer.MAX_VALUE which is 2,147,483,647 bytes.
      Specified by:
      getValueArray in interface Cell
      Returns:
      The array containing the value bytes.
    • getValueOffset

      public int getValueOffset()
      Description copied from interface: Cell
      Returns Array index of first value byte
      Specified by:
      getValueOffset in interface Cell
    • getValueLength

      public int getValueLength()
      Description copied from interface: Cell
      Returns Number of value bytes. Must be < valueArray.length - offset.
      Specified by:
      getValueLength in interface Cell
    • getTagsArray

      public byte[] getTagsArray()
      Description copied from interface: ExtendedCell
      Contiguous raw bytes representing tags that may start at any index in the containing array.
      Specified by:
      getTagsArray in interface Cell
      Specified by:
      getTagsArray in interface ExtendedCell
      Returns:
      the tags byte array
    • getTagsOffset

      public int getTagsOffset()
      Description copied from interface: ExtendedCell
      Returns the first offset where the tags start in the Cell
      Specified by:
      getTagsOffset in interface Cell
      Specified by:
      getTagsOffset in interface ExtendedCell
    • getTagsLength

      public int getTagsLength()
      Description copied from interface: ExtendedCell
      HBase internally uses 2 bytes to store tags length in Cell. As the tags length is always a non-negative number, to make good use of the sign bit, the max of tags length is defined 2 * Short.MAX_VALUE + 1 = 65535. As a result, the return type is int, because a short is not capable of handling that. Please note that even if the return type is int, the max tags length is far less than Integer.MAX_VALUE.
      Specified by:
      getTagsLength in interface Cell
      Specified by:
      getTagsLength in interface ExtendedCell
      Returns:
      the total length of the tags in the Cell.
    • heapSize

      public long heapSize()
      Description copied from interface: HeapSize
      Return the approximate 'exclusive deep size' of implementing object. Includes count of payload and hosting object sizings.
      Specified by:
      heapSize in interface HeapSize
    • setTimestamp

      public void setTimestamp(long ts) throws IOException
      Description copied from interface: ExtendedCell
      Sets with the given timestamp.
      Specified by:
      setTimestamp in interface ExtendedCell
      Parameters:
      ts - timestamp
      Throws:
      IOException
    • setTimestamp

      public void setTimestamp(byte[] ts) throws IOException
      Description copied from interface: ExtendedCell
      Sets with the given timestamp.
      Specified by:
      setTimestamp in interface ExtendedCell
      Parameters:
      ts - buffer containing the timestamp value
      Throws:
      IOException
    • setSequenceId

      public void setSequenceId(long seqId) throws IOException
      Description copied from interface: ExtendedCell
      Sets with the given seqId.
      Specified by:
      setSequenceId in interface ExtendedCell
      Parameters:
      seqId - sequence ID
      Throws:
      IOException
    • write

      public int write(OutputStream out, boolean withTags) throws IOException
      Description copied from interface: ExtendedCell
      Write this cell to an OutputStream in a KeyValue format.
      KeyValue format
      <4 bytes keylength> <4 bytes valuelength> <2 bytes rowlength> <row> <1 byte columnfamilylength> <columnfamily> <columnqualifier> <8 bytes timestamp> <1 byte keytype> <value> <2 bytes tagslength> <tags>
      Specified by:
      write in interface ExtendedCell
      Parameters:
      out - Stream to which cell has to be written
      withTags - Whether to write tags.
      Returns:
      how many bytes are written.
      Throws:
      IOException
    • getSerializedSize

      public int getSerializedSize(boolean withTags)
      Description copied from interface: ExtendedCell
      KeyValue format

      <4 bytes keylength> <4 bytes valuelength> <2 bytes rowlength> <row> <1 byte columnfamilylength> <columnfamily> <columnqualifier> <8 bytes timestamp> <1 byte keytype> <value> <2 bytes tagslength> <tags>

      Specified by:
      getSerializedSize in interface ExtendedCell
      Parameters:
      withTags - Whether to write tags.
      Returns:
      Bytes count required to serialize this Cell in a KeyValue format.
    • write

      public void write(ByteBuffer buf, int offset)
      Description copied from interface: ExtendedCell
      Write this Cell into the given buf's offset in a KeyValue format.
      Specified by:
      write in interface ExtendedCell
      Parameters:
      buf - The buffer where to write the Cell.
      offset - The offset within buffer, to write the Cell.
    • deepClone

      Description copied from interface: ExtendedCell
      Does a deep copy of the contents to a new memory area and returns it as a new cell.
      Specified by:
      deepClone in interface ExtendedCell
      Returns:
      The deep cloned cell