public static class HFileBlockIndex.BlockIndexReader extends Object implements HeapSize
Constructor and Description |
---|
HFileBlockIndex.BlockIndexReader(KeyValue.KVComparator c,
int treeLevel) |
HFileBlockIndex.BlockIndexReader(KeyValue.KVComparator c,
int treeLevel,
HFile.CachingBlockReader cachingBlockReader) |
Modifier and Type | Method and Description |
---|---|
void |
ensureNonEmpty()
Verifies that the block index is non-empty and throws an
IllegalStateException otherwise. |
int |
getRootBlockCount() |
int |
getRootBlockDataSize(int i) |
byte[] |
getRootBlockKey(int i) |
long |
getRootBlockOffset(int i) |
long |
heapSize() |
boolean |
isEmpty() |
BlockWithScanInfo |
loadDataBlockWithScanInfo(byte[] key,
int keyOffset,
int keyLength,
HFileBlock currentBlock,
boolean cacheBlocks,
boolean pread,
boolean isCompaction)
Return the BlockWithScanInfo which contains the DataBlock with other scan info
such as nextIndexedKey.
|
byte[] |
midkey()
An approximation to the
HFile 's mid-key. |
void |
readMultiLevelIndexRoot(HFileBlock blk,
int numEntries)
Read the root-level metadata of a multi-level block index.
|
void |
readRootIndex(DataInput in,
int numEntries)
Read in the root-level index from the given input stream.
|
DataInputStream |
readRootIndex(HFileBlock blk,
int numEntries)
Read in the root-level index from the given input stream.
|
int |
rootBlockContainingKey(byte[] key,
int offset,
int length)
Finds the root-level index block containing the given key.
|
HFileBlock |
seekToDataBlock(byte[] key,
int keyOffset,
int keyLength,
HFileBlock currentBlock,
boolean cacheBlocks,
boolean pread,
boolean isCompaction)
Return the data block which contains this key.
|
String |
toString() |
public HFileBlockIndex.BlockIndexReader(KeyValue.KVComparator c, int treeLevel, HFile.CachingBlockReader cachingBlockReader)
public HFileBlockIndex.BlockIndexReader(KeyValue.KVComparator c, int treeLevel)
public boolean isEmpty()
public void ensureNonEmpty()
IllegalStateException
otherwise.public HFileBlock seekToDataBlock(byte[] key, int keyOffset, int keyLength, HFileBlock currentBlock, boolean cacheBlocks, boolean pread, boolean isCompaction) throws IOException
key
- the key we are looking forkeyOffset
- the offset of the key in its byte arraykeyLength
- the length of the keycurrentBlock
- the current block, to avoid re-reading the same
blockIOException
public BlockWithScanInfo loadDataBlockWithScanInfo(byte[] key, int keyOffset, int keyLength, HFileBlock currentBlock, boolean cacheBlocks, boolean pread, boolean isCompaction) throws IOException
key
- the key we are looking forkeyOffset
- the offset of the key in its byte arraykeyLength
- the length of the keycurrentBlock
- the current block, to avoid re-reading the same
blockcacheBlocks
- pread
- isCompaction
- IOException
public byte[] midkey() throws IOException
HFile
's mid-key. Operates on block
boundaries, and does not go inside blocks. In other words, returns the
first key of the middle block of the file.IOException
public byte[] getRootBlockKey(int i)
i
- from 0 to - 1
public long getRootBlockOffset(int i)
i
- from 0 to - 1
public int getRootBlockDataSize(int i)
i
- zero-based index of a root-level blockpublic int getRootBlockCount()
public int rootBlockContainingKey(byte[] key, int offset, int length)
key
- Key to findkey
(between 0 and the
number of blocks - 1) or -1 if this file does not contain the
request.public void readRootIndex(DataInput in, int numEntries) throws IOException
HFileBlockIndex.BlockIndexWriter.writeIndexBlocks(FSDataOutputStream)
at the
offset that function returned.in
- the buffered input stream or wrapped byte input streamnumEntries
- the number of root-level index entriesIOException
public DataInputStream readRootIndex(HFileBlock blk, int numEntries) throws IOException
HFileBlockIndex.BlockIndexWriter.writeIndexBlocks(FSDataOutputStream)
at the
offset that function returned.blk
- the HFile blocknumEntries
- the number of root-level index entriesIOException
public void readMultiLevelIndexRoot(HFileBlock blk, int numEntries) throws IOException
readRootIndex(DataInput, int)
, but also reads metadata
necessary to compute the mid-key in a multi-level index.blk
- the HFile blocknumEntries
- the number of root-level index entriesIOException
Copyright © 2014 The Apache Software Foundation. All rights reserved.