org.apache.hadoop.hbase.io.hfile
Class HFileReaderV2

java.lang.Object
  extended by org.apache.hadoop.hbase.io.hfile.AbstractHFileReader
      extended by org.apache.hadoop.hbase.io.hfile.HFileReaderV2
All Implemented Interfaces:
Closeable, HFile.CachingBlockReader, HFile.Reader

@InterfaceAudience.Private
public class HFileReaderV2
extends AbstractHFileReader

HFile reader for version 2.


Nested Class Summary
protected static class HFileReaderV2.AbstractScannerV2
           
protected static class HFileReaderV2.EncodedScannerV2
          ScannerV2 that operates on encoded data blocks.
protected static class HFileReaderV2.ScannerV2
          Implementation of HFileScanner interface.
 
Nested classes/interfaces inherited from class org.apache.hadoop.hbase.io.hfile.AbstractHFileReader
AbstractHFileReader.BlockIndexNotLoadedException, AbstractHFileReader.NotSeekedException, AbstractHFileReader.Scanner
 
Field Summary
 
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
 
Constructor Summary
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)
          Opens a HFile.
 
Method Summary
 void close()
           
 void close(boolean evictOnClose)
          Close method with optional evictOnClose
 DataInput getDeleteBloomFilterMetadata()
          Retrieves delete family Bloom filter metadata as appropriate for each HFile version.
 DataInput getGeneralBloomFilterMetadata()
          Returns a buffer with the Bloom filter metadata.
 byte[] getLastKey()
           
 ByteBuffer getMetaBlock(String metaBlockName, boolean cacheBlock)
           
 HFileScanner getScanner(boolean cacheBlocks, boolean pread, boolean isCompaction)
          Create a Scanner on this file.
 boolean isFileInfoLoaded()
           
 byte[] midkey()
           
 HFileBlock readBlock(long dataBlockOffset, long onDiskBlockSize, boolean cacheBlock, boolean pread, boolean isCompaction, BlockType expectedBlockType)
          Read in a file block.
 
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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

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
Method Detail

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 block
cacheBlock -
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 compaction
expectedBlockType - 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

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.