|
||||||||||
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,
HFileBlockDefaultDecodingContext decodingCtx)
|
protected void |
afterEncodingKeyValue(ByteBuffer in,
DataOutputStream out,
HFileBlockDefaultEncodingContext encodingCtx)
|
DataBlockEncoder.EncodedSeeker |
createSeeker(KeyValue.KVComparator comparator,
HFileBlockDecodingContext decodingCtx)
Create a HFileBlock seeker which find KeyValues within a block. |
ByteBuffer |
decodeKeyValues(DataInputStream source,
HFileBlockDecodingContext blkDecodingCtx)
Decode. |
void |
encodeKeyValues(ByteBuffer in,
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. |
protected ByteBuffer |
internalDecodeKeyValues(DataInputStream source,
int allocateHeaderLength,
int skipLastBytes,
HFileBlockDefaultDecodingContext decodingCtx)
|
void |
internalEncodeKeyValues(DataOutputStream writeHere,
ByteBuffer in,
HFileBlockDefaultEncodingContext encodingCtx)
Compress KeyValues and write them to output buffer. |
HFileBlockDecodingContext |
newDataBlockDecodingContext(HFileContext meta)
Creates an encoder specific decoding context, which will prepare the data before actual decoding |
HFileBlockEncodingContext |
newDataBlockEncodingContext(DataBlockEncoding encoding,
byte[] header,
HFileContext meta)
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, HFileBlockDefaultEncodingContext encodingCtx) throws IOException
writeHere
- Where to write compressed data.in
- Source of KeyValue for compression.encodingCtx
- use the Encoding ctx associated with the current block
IOException
- If there is an error writing to output stream.protected ByteBuffer internalDecodeKeyValues(DataInputStream source, int allocateHeaderLength, int skipLastBytes, HFileBlockDefaultDecodingContext decodingCtx) throws IOException
IOException
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(KeyValue.KVComparator comparator, HFileBlockDecodingContext decodingCtx)
DataBlockEncoder
comparator
- what kind of comparison should be used
public ByteBuffer decodeKeyValues(DataInputStream source, HFileBlockDecodingContext blkDecodingCtx) throws IOException
DataBlockEncoder
decodeKeyValues
in interface DataBlockEncoder
source
- Compressed stream of KeyValues.
IOException
- If there is an error in source.protected final void afterEncodingKeyValue(ByteBuffer in, DataOutputStream out, HFileBlockDefaultEncodingContext encodingCtx) throws IOException
IOException
protected final void afterDecodingKeyValue(DataInputStream source, ByteBuffer dest, HFileBlockDefaultDecodingContext decodingCtx) throws IOException
IOException
public HFileBlockEncodingContext newDataBlockEncodingContext(DataBlockEncoding encoding, byte[] header, HFileContext meta)
DataBlockEncoder
newDataBlockEncodingContext
in interface DataBlockEncoder
encoding
- encoding strategy usedheader
- header bytes to be written, put a dummy header here if the header
is unknownmeta
- HFile meta data
public HFileBlockDecodingContext newDataBlockDecodingContext(HFileContext meta)
DataBlockEncoder
newDataBlockDecodingContext
in interface DataBlockEncoder
meta
- HFile meta data
public void encodeKeyValues(ByteBuffer in, HFileBlockEncodingContext blkEncodingCtx) throws IOException
DataBlockEncoder
encodeKeyValues
in interface DataBlockEncoder
in
- Source of KeyValue for compression.blkEncodingCtx
- 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 |