org.apache.hadoop.hbase.io.encoding
Interface DataBlockEncoder

All Known Implementing Classes:
CopyKeyDataBlockEncoder, DiffKeyDeltaEncoder, FastDiffDeltaEncoder, PrefixKeyDeltaEncoder

public interface DataBlockEncoder

Encoding of KeyValue. It aims to be fast and efficient using assumptions:

It is designed to work fast enough to be feasible as in memory compression.


Nested Class Summary
static interface DataBlockEncoder.EncodedSeeker
          An interface which enable to seek while underlying data is encoded.
 
Method Summary
 void compressKeyValues(DataOutputStream out, ByteBuffer in, boolean includesMemstoreTS)
          Compress KeyValues and write them to output buffer.
 DataBlockEncoder.EncodedSeeker createSeeker(org.apache.hadoop.io.RawComparator<byte[]> comparator, boolean includesMemstoreTS)
          Create a HFileBlock seeker which find KeyValues within a block.
 ByteBuffer getFirstKeyInBlock(ByteBuffer block)
          Return first key in block.
 ByteBuffer uncompressKeyValues(DataInputStream source, boolean includesMemstoreTS)
          Uncompress.
 ByteBuffer uncompressKeyValues(DataInputStream source, int allocateHeaderLength, int skipLastBytes, boolean includesMemstoreTS)
          Uncompress.
 

Method Detail

compressKeyValues

void compressKeyValues(DataOutputStream out,
                       ByteBuffer in,
                       boolean includesMemstoreTS)
                       throws IOException
Compress KeyValues and write them to output buffer.

Parameters:
out - Where to write compressed data.
in - Source of KeyValue for compression.
includesMemstoreTS - true if including memstore timestamp after every key-value pair
Throws:
IOException - If there is an error writing to output stream.

uncompressKeyValues

ByteBuffer uncompressKeyValues(DataInputStream source,
                               boolean includesMemstoreTS)
                               throws IOException
Uncompress.

Parameters:
source - Compressed stream of KeyValues.
includesMemstoreTS - true if including memstore timestamp after every key-value pair
Returns:
Uncompressed block of KeyValues.
Throws:
IOException - If there is an error in source.

uncompressKeyValues

ByteBuffer uncompressKeyValues(DataInputStream source,
                               int allocateHeaderLength,
                               int skipLastBytes,
                               boolean includesMemstoreTS)
                               throws IOException
Uncompress.

Parameters:
source - Compressed stream of KeyValues.
allocateHeaderLength - allocate this many bytes for the header.
skipLastBytes - Do not copy n last bytes.
includesMemstoreTS - true if including memstore timestamp after every key-value pair
Returns:
Uncompressed block of KeyValues.
Throws:
IOException - If there is an error in source.

getFirstKeyInBlock

ByteBuffer getFirstKeyInBlock(ByteBuffer block)
Return first key in block. Useful for indexing. Typically does not make a deep copy but returns a buffer wrapping a segment of the actual block's byte array. This is because the first key in block is usually stored unencoded.

Parameters:
block - encoded block we want index, the position will not change
Returns:
First key in block.

createSeeker

DataBlockEncoder.EncodedSeeker createSeeker(org.apache.hadoop.io.RawComparator<byte[]> comparator,
                                            boolean includesMemstoreTS)
Create a HFileBlock seeker which find KeyValues within a block.

Parameters:
comparator - what kind of comparison should be used
includesMemstoreTS - true if including memstore timestamp after every key-value pair
Returns:
A newly created seeker.


Copyright © 2014 The Apache Software Foundation. All Rights Reserved.