org.apache.hadoop.hbase.io.hfile
Class HFileReaderV2
java.lang.Object
org.apache.hadoop.hbase.regionserver.metrics.SchemaConfigured
org.apache.hadoop.hbase.io.hfile.AbstractHFileReader
org.apache.hadoop.hbase.io.hfile.HFileReaderV2
- All Implemented Interfaces:
- Closeable, HeapSize, HFile.CachingBlockReader, HFile.Reader, SchemaMetrics.SchemaAware
public class HFileReaderV2
- extends AbstractHFileReader
HFile
reader for version 2.
Fields inherited from class org.apache.hadoop.hbase.io.hfile.AbstractHFileReader |
avgKeyLen, avgValueLen, cacheConf, closeIStream, comparator, compressAlgo, dataBlockEncoder, dataBlockIndexReader, fileInfo, fileSize, fsBlockReader, hfs, istream, istreamNoFsChecksum, lastKey, metaBlockIndexReader, name, path, trailer |
Methods inherited from class org.apache.hadoop.hbase.io.hfile.AbstractHFileReader |
getComparator, getCompressionAlgorithm, getDataBlockIndexReader, getEncodingOnDisk, getEntries, getFirstKey, getFirstRowKey, getLastRowKey, getName, getPath, getScanner, getTrailer, indexSize, length, loadFileInfo, toString, toStringFirstKey, toStringLastKey |
HFileReaderV2
public HFileReaderV2(org.apache.hadoop.fs.Path path,
FixedFileTrailer trailer,
org.apache.hadoop.fs.FSDataInputStream fsdis,
org.apache.hadoop.fs.FSDataInputStream fsdisNoFsChecksum,
long size,
boolean closeIStream,
CacheConfig cacheConf,
DataBlockEncoding preferredEncodingInCache,
HFileSystem hfs)
throws IOException
- Opens a HFile. You must load the index before you can use it by calling
AbstractHFileReader.loadFileInfo()
.
- Parameters:
path
- Path to HFile.trailer
- File trailer.fsdis
- input stream. Caller is responsible for closing the passed
stream.size
- Length of the stream.closeIStream
- Whether to close the stream.cacheConf
- Cache configuration.preferredEncodingInCache
- the encoding to use in cache in case we
have a choice. If the file is already encoded on disk, we will
still use its on-disk encoding in cache.
- Throws:
IOException
getScanner
public HFileScanner getScanner(boolean cacheBlocks,
boolean pread,
boolean isCompaction)
- Create a Scanner on this file. No seeks or reads are done on creation. Call
HFileScanner.seekTo(byte[])
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.
- Parameters:
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?
- Returns:
- Scanner on this file.
getMetaBlock
public ByteBuffer getMetaBlock(String metaBlockName,
boolean cacheBlock)
throws IOException
- Parameters:
metaBlockName
- cacheBlock
- Add block to cache, if found
- Returns:
- block wrapped in a ByteBuffer, with header skipped
- Throws:
IOException
readBlock
public HFileBlock readBlock(long dataBlockOffset,
long onDiskBlockSize,
boolean cacheBlock,
boolean pread,
boolean isCompaction,
BlockType expectedBlockType)
throws IOException
- Read in a file block.
- Parameters:
dataBlockOffset
- offset to read.onDiskBlockSize
- size of the blockcacheBlock
- pread
- Use positional read instead of seek+read (positional is
better doing random reads whereas seek+read is better scanning).isCompaction
- 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)
- Returns:
- Block wrapped in a ByteBuffer.
- Throws:
IOException
hasMVCCInfo
public boolean hasMVCCInfo()
- Specified by:
hasMVCCInfo
in interface HFile.Reader
- Overrides:
hasMVCCInfo
in class AbstractHFileReader
getLastKey
public byte[] getLastKey()
- Returns:
- Last key in the file. May be null if file has no entries. Note that
this is not the last row key, but rather the byte form of the last
KeyValue.
midkey
public byte[] midkey()
throws IOException
- Returns:
- Midkey for this file. We work with block boundaries only so
returned midkey is an approximation only.
- Throws:
IOException
close
public void close()
throws IOException
- Throws:
IOException
close
public void close(boolean evictOnClose)
throws IOException
- Description copied from interface:
HFile.Reader
- Close method with optional evictOnClose
- Throws:
IOException
getGeneralBloomFilterMetadata
public DataInput getGeneralBloomFilterMetadata()
throws IOException
- Returns a buffer with the Bloom filter metadata. The caller takes
ownership of the buffer.
- Throws:
IOException
getDeleteBloomFilterMetadata
public DataInput getDeleteBloomFilterMetadata()
throws IOException
- Description copied from interface:
HFile.Reader
- Retrieves delete family Bloom filter metadata as appropriate for each
HFile
version.
Knows nothing about how that metadata is structured.
- Throws:
IOException
isFileInfoLoaded
public boolean isFileInfoLoaded()
- Specified by:
isFileInfoLoaded
in class AbstractHFileReader
Copyright © 2013 The Apache Software Foundation. All Rights Reserved.