|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder
@InterfaceAudience.Private public class PrefixKeyDeltaEncoder
Compress key by storing size of common prefix with previous KeyValue and storing raw size of rest. Format: 1-5 bytes: compressed key length minus prefix (7-bit encoding) 1-5 bytes: compressed value length (7-bit encoding) 1-3 bytes: compressed length of common key prefix ... bytes: rest of key (including timestamp) ... bytes: value In a worst case compressed KeyValue will be three bytes longer than original.
| Nested Class Summary | |
|---|---|
protected static class |
BufferedDataBlockEncoder.BufferedEncodedSeeker<STATE extends BufferedDataBlockEncoder.SeekerState>
|
protected static class |
BufferedDataBlockEncoder.SeekerState
|
| Nested classes/interfaces inherited from interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder |
|---|
DataBlockEncoder.EncodedSeeker |
| Constructor Summary | |
|---|---|
PrefixKeyDeltaEncoder()
|
|
| Method Summary | |
|---|---|
protected void |
afterDecodingKeyValue(DataInputStream source,
ByteBuffer dest,
boolean includesMemstoreTS)
|
protected void |
afterEncodingKeyValue(ByteBuffer in,
DataOutputStream out,
boolean includesMemstoreTS)
|
DataBlockEncoder.EncodedSeeker |
createSeeker(org.apache.hadoop.io.RawComparator<byte[]> comparator,
boolean includesMemstoreTS)
Create a HFileBlock seeker which find KeyValues within a block. |
ByteBuffer |
decodeKeyValues(DataInputStream source,
boolean includesMemstoreTS)
Decode. |
ByteBuffer |
decodeKeyValues(DataInputStream source,
int allocHeaderLength,
int skipLastBytes,
boolean includesMemstoreTS)
Uncompress. |
void |
encodeKeyValues(ByteBuffer in,
boolean includesMemstoreTS,
HFileBlockEncodingContext blkEncodingCtx)
Encodes KeyValues. |
protected static void |
ensureSpace(ByteBuffer out,
int length)
Asserts that there is at least the given amount of unfilled space remaining in the given buffer. |
ByteBuffer |
getFirstKeyInBlock(ByteBuffer block)
Return first key in block. |
void |
internalEncodeKeyValues(DataOutputStream writeHere,
ByteBuffer in,
boolean includesMemstoreTS)
Compress KeyValues and write them to output buffer. |
HFileBlockDecodingContext |
newDataBlockDecodingContext(Compression.Algorithm compressionAlgorithm)
Creates an encoder specific decoding context, which will prepare the data before actual decoding |
HFileBlockEncodingContext |
newDataBlockEncodingContext(Compression.Algorithm compressionAlgorithm,
DataBlockEncoding encoding,
byte[] header)
Creates a encoder specific encoding context |
String |
toString()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public PrefixKeyDeltaEncoder()
| Method Detail |
|---|
public void internalEncodeKeyValues(DataOutputStream writeHere,
ByteBuffer in,
boolean includesMemstoreTS)
throws IOException
writeHere - Where to write compressed data.in - Source of KeyValue for compression.includesMemstoreTS - true if including memstore timestamp after every
key-value pair
IOException - If there is an error writing to output stream.
public ByteBuffer decodeKeyValues(DataInputStream source,
int allocHeaderLength,
int skipLastBytes,
boolean includesMemstoreTS)
throws IOException
DataBlockEncoder
source - encoded stream of KeyValues.allocHeaderLength - 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
IOException - If there is an error in source.public ByteBuffer getFirstKeyInBlock(ByteBuffer block)
DataBlockEncoder
block - encoded block we want index, the position will not change
public String toString()
toString in class Object
public DataBlockEncoder.EncodedSeeker createSeeker(org.apache.hadoop.io.RawComparator<byte[]> comparator,
boolean includesMemstoreTS)
DataBlockEncoder
comparator - what kind of comparison should be usedincludesMemstoreTS - true if including memstore timestamp after every
key-value pair
public ByteBuffer decodeKeyValues(DataInputStream source,
boolean includesMemstoreTS)
throws IOException
DataBlockEncoder
decodeKeyValues in interface DataBlockEncodersource - Compressed stream of KeyValues.includesMemstoreTS - true if including memstore timestamp after every
key-value pair
IOException - If there is an error in source.
protected final void afterEncodingKeyValue(ByteBuffer in,
DataOutputStream out,
boolean includesMemstoreTS)
protected final void afterDecodingKeyValue(DataInputStream source,
ByteBuffer dest,
boolean includesMemstoreTS)
public HFileBlockEncodingContext newDataBlockEncodingContext(Compression.Algorithm compressionAlgorithm,
DataBlockEncoding encoding,
byte[] header)
DataBlockEncoder
newDataBlockEncodingContext in interface DataBlockEncodercompressionAlgorithm - compression algorithm used if the final data needs to be
compressedencoding - encoding strategy usedheader - header bytes to be written, put a dummy header here if the header
is unknown
public HFileBlockDecodingContext newDataBlockDecodingContext(Compression.Algorithm compressionAlgorithm)
DataBlockEncoder
newDataBlockDecodingContext in interface DataBlockEncodercompressionAlgorithm - compression algorithm used if the data needs to be decompressed
public void encodeKeyValues(ByteBuffer in,
boolean includesMemstoreTS,
HFileBlockEncodingContext blkEncodingCtx)
throws IOException
DataBlockEncoder
encodeKeyValues in interface DataBlockEncoderin - Source of KeyValue for compression.includesMemstoreTS - true if including memstore timestamp after every key-value pairblkEncodingCtx - the encoding context which will contain encoded uncompressed bytes
as well as compressed encoded bytes if compression is enabled, and
also it will reuse resources across multiple calls.
IOException - If there is an error writing to output stream.
protected static void ensureSpace(ByteBuffer out,
int length)
throws EncoderBufferTooSmallException
out - typically, the buffer we are writing tolength - the required space in the buffer
EncoderBufferTooSmallException - If there are no enough bytes.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||