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

public class HFileReaderV2
extends AbstractHFileReader

HFile reader for version 2.


Nested Class Summary
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, blockLoads, cacheConf, cacheHits, closeIStream, comparator, compressAlgo, dataBlockIndexReader, fileInfo, fileSize, fsBlockReader, istream, lastKey, metaBlockIndexReader, metaLoads, name, path, trailer
 
Constructor Summary
HFileReaderV2(org.apache.hadoop.fs.Path path, FixedFileTrailer trailer, org.apache.hadoop.fs.FSDataInputStream fsdis, long size, boolean closeIStream, CacheConfig cacheConf)
          Opens a HFile.
 
Method Summary
 void close()
           
 void close(boolean evictOnClose)
          Close method with optional evictOnClose
 DataInput getBloomFilterMetadata()
          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)
          Read in a file block.
 
Methods inherited from class org.apache.hadoop.hbase.io.hfile.AbstractHFileReader
getColumnFamilyName, getComparator, getCompressionAlgorithm, getDataBlockIndexReader, getEntries, getFirstKey, getFirstRowKey, getLastRowKey, getName, getPath, getScanner, getTrailer, indexSize, length, loadFileInfo, parseCfNameFromPath, 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,
                     long size,
                     boolean closeIStream,
                     CacheConfig cacheConf)
              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.
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)
                     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
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

getBloomFilterMetadata

public DataInput getBloomFilterMetadata()
                                 throws IOException
Returns a buffer with the Bloom filter metadata. The caller takes ownership of the buffer.

Throws:
IOException

isFileInfoLoaded

public boolean isFileInfoLoaded()
Specified by:
isFileInfoLoaded in class AbstractHFileReader


Copyright © 2012 The Apache Software Foundation. All Rights Reserved.