org.apache.hadoop.hbase.io
Class HalfStoreFileReader

java.lang.Object
  extended by org.apache.hadoop.hbase.regionserver.metrics.SchemaConfigured
      extended by org.apache.hadoop.hbase.regionserver.StoreFile.Reader
          extended by org.apache.hadoop.hbase.io.HalfStoreFileReader
All Implemented Interfaces:
HeapSize, SchemaMetrics.SchemaAware

public class HalfStoreFileReader
extends StoreFile.Reader

A facade for a HFile.Reader that serves up either the top or bottom half of a HFile where 'bottom' is the first half of the file containing the keys that sort lowest and 'top' is the second half of the file with keys that sort greater than those of the bottom half. The top includes the split files midkey, of the key that follows if it does not exist in the file.

This type works in tandem with the Reference type. This class is used reading while Reference is used writing.

This file is not splitable. Calls to midkey() return null.


Field Summary
protected  byte[] splitkey
           
 
Fields inherited from class org.apache.hadoop.hbase.regionserver.StoreFile.Reader
bloomFilterType, deleteFamilyBloomFilter, generalBloomFilter, sequenceID, timeRangeTracker
 
Fields inherited from class org.apache.hadoop.hbase.regionserver.metrics.SchemaConfigured
SCHEMA_CONFIGURED_UNALIGNED_HEAP_SIZE
 
Constructor Summary
HalfStoreFileReader(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path p, CacheConfig cacheConf, Reference r, DataBlockEncoding preferredEncodingInCache)
          Creates a half file reader for a normal hfile.
HalfStoreFileReader(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path p, HFileLink link, CacheConfig cacheConf, Reference r, DataBlockEncoding preferredEncodingInCache)
          Creates a half file reader for a hfile referred to by an hfilelink.
 
Method Summary
 byte[] getFirstKey()
           
 byte[] getLastKey()
           
 HFileScanner getScanner(boolean cacheBlocks, boolean pread, boolean isCompaction)
          Warning: Do not write further code which depends on this call.
protected  boolean isTop()
           
 byte[] midkey()
           
 boolean passesKeyRangeFilter(Scan scan)
          Checks whether the given scan rowkey range overlaps with the current storefile's
 
Methods inherited from class org.apache.hadoop.hbase.regionserver.StoreFile.Reader
close, getBloomFilterType, getColumnFamilyName, getComparator, getDeleteFamilyCnt, getEntries, getFilterEntries, getHFileVersion, getMaxTimestamp, getScanner, getSequenceID, getStoreFileScanner, getStoreFileScanner, getTotalBloomSize, getTotalUncompressedBytes, indexSize, length, loadBloomfilter, loadFileInfo, passesDeleteFamilyBloomFilter, passesGeneralBloomFilter, schemaConfigurationChanged, setDeleteFamilyBloomFilterFaulty, setGeneralBloomFilterFaulty, setSequenceID
 
Methods inherited from class org.apache.hadoop.hbase.regionserver.metrics.SchemaConfigured
createUnknown, getSchemaMetrics, getTableName, heapSize, isSchemaConfigured, passSchemaMetricsTo, resetSchemaMetricsConf, schemaConfAsJSON
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

splitkey

protected final byte[] splitkey
Constructor Detail

HalfStoreFileReader

public HalfStoreFileReader(org.apache.hadoop.fs.FileSystem fs,
                           org.apache.hadoop.fs.Path p,
                           CacheConfig cacheConf,
                           Reference r,
                           DataBlockEncoding preferredEncodingInCache)
                    throws IOException
Creates a half file reader for a normal hfile.

Parameters:
fs - fileystem to read from
p - path to hfile
cacheConf -
r - original reference file (contains top or bottom)
preferredEncodingInCache -
Throws:
IOException

HalfStoreFileReader

public HalfStoreFileReader(org.apache.hadoop.fs.FileSystem fs,
                           org.apache.hadoop.fs.Path p,
                           HFileLink link,
                           CacheConfig cacheConf,
                           Reference r,
                           DataBlockEncoding preferredEncodingInCache)
                    throws IOException
Creates a half file reader for a hfile referred to by an hfilelink.

Parameters:
fs - fileystem to read from
p - path to hfile
link -
cacheConf -
r - original reference file (contains top or bottom)
preferredEncodingInCache -
Throws:
IOException
Method Detail

isTop

protected boolean isTop()

getScanner

public HFileScanner getScanner(boolean cacheBlocks,
                               boolean pread,
                               boolean isCompaction)
Description copied from class: StoreFile.Reader
Warning: Do not write further code which depends on this call. Instead use getStoreFileScanner() which uses the StoreFileScanner class/interface which is the preferred way to scan a store with higher level concepts.

Overrides:
getScanner in class StoreFile.Reader
Parameters:
cacheBlocks - should we cache the blocks?
pread - use pread (for concurrent small readers)
isCompaction - is scanner being used for compaction?
Returns:
the underlying HFileScanner

passesKeyRangeFilter

public boolean passesKeyRangeFilter(Scan scan)
Description copied from class: StoreFile.Reader
Checks whether the given scan rowkey range overlaps with the current storefile's

Overrides:
passesKeyRangeFilter in class StoreFile.Reader
Parameters:
scan - the scan specification. Used to determine the rowkey range.
Returns:
true if there is overlap, false otherwise

getLastKey

public byte[] getLastKey()
Overrides:
getLastKey in class StoreFile.Reader

midkey

public byte[] midkey()
              throws IOException
Overrides:
midkey in class StoreFile.Reader
Throws:
IOException

getFirstKey

public byte[] getFirstKey()
Overrides:
getFirstKey in class StoreFile.Reader


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