@InterfaceAudience.Private public abstract class HFileReaderImpl extends Object implements HFile.Reader, org.apache.hadoop.conf.Configurable
HFile.Reader.| Modifier and Type | Class and Description |
|---|---|
static class |
HFileReaderImpl.BlockIndexNotLoadedException |
protected static class |
HFileReaderImpl.EncodedScanner
Scanner that operates on encoded data blocks.
|
protected static class |
HFileReaderImpl.HFileScannerImpl |
static class |
HFileReaderImpl.NotSeekedException
An exception thrown when an operation requiring a scanner to be seeked is invoked on a scanner
that is not seeked.
|
| Modifier and Type | Field and Description |
|---|---|
protected CacheConfig |
cacheConf
Block cache configuration.
|
protected ReaderContext |
context |
protected HFileDataBlockEncoder |
dataBlockEncoder
What kind of data block encoding should be used while reading, writing, and handling cache.
|
protected org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.CellBasedKeyBlockIndexReader |
dataBlockIndexReader
Data block index reader keeping the root data index in memory
|
protected HFileInfo |
fileInfo |
protected org.apache.hadoop.hbase.io.hfile.HFileBlock.FSReader |
fsBlockReader
Filesystem-level block reader.
|
protected HFileContext |
hfileContext |
static int |
KEY_VALUE_LEN_SIZE
The size of a (key length, value length) tuple that prefixes each entry in a data block.
|
protected org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.ByteArrayKeyBlockIndexReader |
metaBlockIndexReader
Meta block index reader -- always single level
|
static int |
MINOR_VERSION_NO_CHECKSUM
In HFile minor version that does not support checksums
|
static int |
MINOR_VERSION_WITH_CHECKSUM
Minor versions in HFile starting with this number have hbase checksums
|
protected String |
name
File name to be used for block names
|
protected org.apache.hadoop.fs.Path |
path
Path of file
|
static int |
PBUF_TRAILER_MINOR_VERSION
HFile minor version that introduced pbuf filetrailer
|
protected FixedFileTrailer |
trailer |
| Constructor and Description |
|---|
HFileReaderImpl(ReaderContext context,
HFileInfo fileInfo,
CacheConfig cacheConf,
org.apache.hadoop.conf.Configuration conf)
Opens a HFile.
|
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
CellComparator |
getComparator()
Returns comparator
|
Compression.Algorithm |
getCompressionAlgorithm() |
org.apache.hadoop.conf.Configuration |
getConf() |
ReaderContext |
getContext() |
DataBlockEncoding |
getDataBlockEncoding() |
org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.CellBasedKeyBlockIndexReader |
getDataBlockIndexReader() |
DataInput |
getDeleteBloomFilterMetadata()
Retrieves delete family Bloom filter metadata as appropriate for each
HFile version. |
DataBlockEncoding |
getEffectiveEncodingInCache(boolean isCompaction) |
long |
getEntries()
Returns number of KV entries in this HFile
|
HFileContext |
getFileContext()
Return the file context of the HFile this reader belongs to
|
Optional<Cell> |
getFirstKey() |
Optional<byte[]> |
getFirstRowKey()
|
DataInput |
getGeneralBloomFilterMetadata()
Returns a buffer with the Bloom filter metadata.
|
HFileInfo |
getHFileInfo() |
Optional<Cell> |
getLastKey() |
Optional<byte[]> |
getLastRowKey()
|
int |
getMajorVersion() |
HFileBlock |
getMetaBlock(String metaBlockName,
boolean cacheBlock) |
org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.ByteArrayKeyBlockIndexReader |
getMetaBlockIndexReader() |
String |
getName()
Returns this reader's "name".
|
org.apache.hadoop.fs.Path |
getPath() |
HFileScanner |
getScanner(org.apache.hadoop.conf.Configuration conf,
boolean cacheBlocks,
boolean pread)
Create a Scanner on this file.
|
HFileScanner |
getScanner(org.apache.hadoop.conf.Configuration conf,
boolean cacheBlocks,
boolean pread,
boolean isCompaction)
Create a Scanner on this file.
|
FixedFileTrailer |
getTrailer() |
org.apache.hadoop.hbase.io.hfile.HFileBlock.FSReader |
getUncachedBlockReader()
For testing
|
boolean |
hasMVCCInfo() |
long |
indexSize() |
boolean |
isFileInfoLoaded() |
boolean |
isPrimaryReplicaReader() |
long |
length() |
Optional<Cell> |
midKey() |
boolean |
prefetchComplete()
Returns false if block prefetching was requested for this file and has not completed, true
otherwise
|
HFileBlock |
readBlock(long dataBlockOffset,
long onDiskBlockSize,
boolean cacheBlock,
boolean pread,
boolean isCompaction,
boolean updateCacheMetrics,
BlockType expectedBlockType,
DataBlockEncoding expectedDataBlockEncoding)
Read in a file block.
|
HFileBlock |
readBlock(long dataBlockOffset,
long onDiskBlockSize,
boolean cacheBlock,
boolean pread,
boolean isCompaction,
boolean updateCacheMetrics,
BlockType expectedBlockType,
DataBlockEncoding expectedDataBlockEncoding,
boolean cacheOnly) |
void |
setConf(org.apache.hadoop.conf.Configuration conf) |
void |
setDataBlockEncoder(HFileDataBlockEncoder dataBlockEncoder) |
void |
setDataBlockIndexReader(org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.CellBasedKeyBlockIndexReader reader) |
void |
setMetaBlockIndexReader(org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.ByteArrayKeyBlockIndexReader reader) |
String |
toString() |
void |
unbufferStream()
To close the stream's socket.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcloseprotected org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.CellBasedKeyBlockIndexReader dataBlockIndexReader
protected org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.ByteArrayKeyBlockIndexReader metaBlockIndexReader
protected FixedFileTrailer trailer
protected HFileDataBlockEncoder dataBlockEncoder
protected final CacheConfig cacheConf
protected ReaderContext context
protected final HFileInfo fileInfo
protected final org.apache.hadoop.fs.Path path
protected final String name
protected HFileContext hfileContext
protected org.apache.hadoop.hbase.io.hfile.HFileBlock.FSReader fsBlockReader
public static final int MINOR_VERSION_WITH_CHECKSUM
public static final int MINOR_VERSION_NO_CHECKSUM
public static final int PBUF_TRAILER_MINOR_VERSION
public static final int KEY_VALUE_LEN_SIZE
public HFileReaderImpl(ReaderContext context, HFileInfo fileInfo, CacheConfig cacheConf, org.apache.hadoop.conf.Configuration conf) throws IOException
context - Reader context infofileInfo - HFile infocacheConf - Cache configuration.conf - ConfigurationIOExceptionpublic long length()
length in interface HFile.Readerpublic Optional<Cell> getFirstKey()
getFirstKey in interface HFile.Readerpublic Optional<byte[]> getFirstRowKey()
HFile version 1: move this to StoreFile after Ryan's patch goes in to
eliminate KeyValue here.getFirstRowKey in interface HFile.Readerpublic Optional<byte[]> getLastRowKey()
HFile version 1: move this to StoreFile after Ryan's patch goes in to
eliminate KeyValue here.getLastRowKey in interface HFile.Readerpublic long getEntries()
getEntries in interface HFile.Readerpublic CellComparator getComparator()
getComparator in interface HFile.Readerpublic Compression.Algorithm getCompressionAlgorithm()
public long indexSize()
indexSize in interface HFile.Readerpublic String getName()
HFile.ReadergetName in interface HFile.Readerpublic void setDataBlockEncoder(HFileDataBlockEncoder dataBlockEncoder)
setDataBlockEncoder in interface HFile.Readerpublic void setDataBlockIndexReader(org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.CellBasedKeyBlockIndexReader reader)
setDataBlockIndexReader in interface HFile.Readerpublic org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.CellBasedKeyBlockIndexReader getDataBlockIndexReader()
getDataBlockIndexReader in interface HFile.Readerpublic void setMetaBlockIndexReader(org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.ByteArrayKeyBlockIndexReader reader)
setMetaBlockIndexReader in interface HFile.Readerpublic org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.ByteArrayKeyBlockIndexReader getMetaBlockIndexReader()
getMetaBlockIndexReader in interface HFile.Readerpublic FixedFileTrailer getTrailer()
getTrailer in interface HFile.Readerpublic ReaderContext getContext()
getContext in interface HFile.Readerpublic HFileInfo getHFileInfo()
getHFileInfo in interface HFile.Readerpublic boolean isPrimaryReplicaReader()
isPrimaryReplicaReader in interface HFile.Readerpublic org.apache.hadoop.fs.Path getPath()
getPath in interface HFile.Readerpublic DataBlockEncoding getDataBlockEncoding()
getDataBlockEncoding in interface HFile.Readerpublic org.apache.hadoop.conf.Configuration getConf()
getConf in interface org.apache.hadoop.conf.Configurablepublic void setConf(org.apache.hadoop.conf.Configuration conf)
setConf in interface org.apache.hadoop.conf.Configurablepublic HFileBlock getMetaBlock(String metaBlockName, boolean cacheBlock) throws IOException
getMetaBlock in interface HFile.ReadercacheBlock - Add block to cache, if foundIOExceptionpublic HFileBlock readBlock(long dataBlockOffset, long onDiskBlockSize, boolean cacheBlock, boolean pread, boolean isCompaction, boolean updateCacheMetrics, BlockType expectedBlockType, DataBlockEncoding expectedDataBlockEncoding) throws IOException
HFile.CachingBlockReaderreadBlock in interface HFile.CachingBlockReaderdataBlockOffset - offset to read.onDiskBlockSize - size of the blockisCompaction - is this block being read as part of a compactionexpectedBlockType - the block type we are expecting to read with this read
operation, or null to read whatever block type is available
and avoid checking (that might reduce caching efficiency of
encoded data blocks)expectedDataBlockEncoding - the data block encoding the caller is expecting data blocks
to be in, or null to not perform this check and return the
block irrespective of the encoding. This check only applies
to data blocks and can be set to null when the caller is
expecting to read a non-data block and has set
expectedBlockType accordingly.IOExceptionpublic HFileBlock readBlock(long dataBlockOffset, long onDiskBlockSize, boolean cacheBlock, boolean pread, boolean isCompaction, boolean updateCacheMetrics, BlockType expectedBlockType, DataBlockEncoding expectedDataBlockEncoding, boolean cacheOnly) throws IOException
readBlock in interface HFile.CachingBlockReaderIOExceptionpublic boolean hasMVCCInfo()
hasMVCCInfo in interface HFile.Readerpublic Optional<Cell> getLastKey()
getLastKey in interface HFile.Readerpublic Optional<Cell> midKey() throws IOException
midKey in interface HFile.ReaderIOExceptionpublic void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableIOExceptionpublic DataBlockEncoding getEffectiveEncodingInCache(boolean isCompaction)
getEffectiveEncodingInCache in interface HFile.Readerpublic org.apache.hadoop.hbase.io.hfile.HFileBlock.FSReader getUncachedBlockReader()
getUncachedBlockReader in interface HFile.Readerpublic DataInput getGeneralBloomFilterMetadata() throws IOException
getGeneralBloomFilterMetadata in interface HFile.ReaderIOExceptionpublic DataInput getDeleteBloomFilterMetadata() throws IOException
HFile.ReaderHFile version.
Knows nothing about how that metadata is structured.getDeleteBloomFilterMetadata in interface HFile.ReaderIOExceptionpublic boolean isFileInfoLoaded()
public HFileContext getFileContext()
HFile.ReadergetFileContext in interface HFile.Readerpublic boolean prefetchComplete()
prefetchComplete in interface HFile.Readerpublic HFileScanner getScanner(org.apache.hadoop.conf.Configuration conf, boolean cacheBlocks, boolean pread)
HFileScanner.seekTo(Cell) to position an start the read. There is nothing to clean up
in a Scanner. Letting go of your references to the scanner is sufficient. NOTE: Do not use this
overload of getScanner for compactions. See
getScanner(Configuration, boolean, boolean, boolean)getScanner in interface HFile.Readerconf - Store configuration.cacheBlocks - True if we should cache blocks read in by this scanner.pread - Use positional read rather than seek+read if true (pread is better for
random reads, seek+read is better scanning).public HFileScanner getScanner(org.apache.hadoop.conf.Configuration conf, boolean cacheBlocks, boolean pread, boolean isCompaction)
HFileScanner.seekTo(Cell) to position an start the read. There is nothing to clean up
in a Scanner. Letting go of your references to the scanner is sufficient.getScanner in interface HFile.Readerconf - Store configuration.cacheBlocks - True if we should cache blocks read in by this scanner.pread - Use positional read rather than seek+read if true (pread is better for
random reads, seek+read is better scanning).isCompaction - is scanner being used for a compaction?public int getMajorVersion()
public void unbufferStream()
HFile.ReaderunbufferStream in interface HFile.ReaderCopyright © 2007–2020 The Apache Software Foundation. All rights reserved.