org.apache.hadoop.io.file.tfile
Class TFile.Reader.Scanner

java.lang.Object
  extended by org.apache.hadoop.io.file.tfile.TFile.Reader.Scanner
All Implemented Interfaces:
Closeable
Enclosing class:
TFile.Reader

public static class TFile.Reader.Scanner
extends Object
implements Closeable

The TFile Scanner. The Scanner has an implicit cursor, which, upon creation, points to the first key-value pair in the scan range. If the scan range is empty, the cursor will point to the end of the scan range.

Use atEnd() to test whether the cursor is at the end location of the scanner.

Use advance() to move the cursor to the next key-value pair (or end if none exists). Use seekTo methods ( seekTo(byte[]) or seekTo(byte[], int, int)) to seek to any arbitrary location in the covered range (including backward seeking). Use rewind() to seek back to the beginning of the scanner. Use seekToEnd() to seek to the end of the scanner.

Actual keys and values may be obtained through TFile.Reader.Scanner.Entry object, which is obtained through entry().


Nested Class Summary
 class TFile.Reader.Scanner.Entry
          Entry to a <Key, Value> pair.
 
Constructor Summary
protected TFile.Reader.Scanner(TFile.Reader reader, long offBegin, long offEnd)
          Constructor
protected TFile.Reader.Scanner(TFile.Reader reader, RawComparable beginKey, RawComparable endKey)
          Constructor
 
Method Summary
 boolean advance()
          Move the cursor to the next key-value pair.
 boolean atEnd()
          Is cursor at the end location?
 void close()
          Close the scanner.
 TFile.Reader.Scanner.Entry entry()
          Get an entry to access the key and value.
 long getRecordNum()
          Get the RecordNum corresponding to the entry pointed by the cursor.
 void lowerBound(byte[] key)
          Move the cursor to the first entry whose key is greater than or equal to the input key.
 void lowerBound(byte[] key, int keyOffset, int keyLen)
          Move the cursor to the first entry whose key is greater than or equal to the input key.
 void rewind()
          Rewind to the first entry in the scanner.
 boolean seekTo(byte[] key)
          Move the cursor to the first entry whose key is greater than or equal to the input key.
 boolean seekTo(byte[] key, int keyOffset, int keyLen)
          Move the cursor to the first entry whose key is greater than or equal to the input key.
 void seekToEnd()
          Seek to the end of the scanner.
 void upperBound(byte[] key)
          Move the cursor to the first entry whose key is strictly greater than the input key.
 void upperBound(byte[] key, int keyOffset, int keyLen)
          Move the cursor to the first entry whose key is strictly greater than the input key.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TFile.Reader.Scanner

protected TFile.Reader.Scanner(TFile.Reader reader,
                               long offBegin,
                               long offEnd)
                        throws IOException
Constructor

Parameters:
reader - The TFile reader object.
offBegin - Begin byte-offset of the scan.
offEnd - End byte-offset of the scan.
Throws:
IOException - The offsets will be rounded to the beginning of a compressed block whose offset is greater than or equal to the specified offset.

TFile.Reader.Scanner

protected TFile.Reader.Scanner(TFile.Reader reader,
                               RawComparable beginKey,
                               RawComparable endKey)
                        throws IOException
Constructor

Parameters:
reader - The TFile reader object.
beginKey - Begin key of the scan. If null, scan from the first entry of the TFile.
endKey - End key of the scan. If null, scan up to the last entry of the TFile.
Throws:
IOException
Method Detail

seekTo

public boolean seekTo(byte[] key)
               throws IOException
Move the cursor to the first entry whose key is greater than or equal to the input key. Synonymous to seekTo(key, 0, key.length). The entry returned by the previous entry() call will be invalid.

Parameters:
key - The input key
Returns:
true if we find an equal key.
Throws:
IOException

seekTo

public boolean seekTo(byte[] key,
                      int keyOffset,
                      int keyLen)
               throws IOException
Move the cursor to the first entry whose key is greater than or equal to the input key. The entry returned by the previous entry() call will be invalid.

Parameters:
key - The input key
keyOffset - offset in the key buffer.
keyLen - key buffer length.
Returns:
true if we find an equal key; false otherwise.
Throws:
IOException

rewind

public void rewind()
            throws IOException
Rewind to the first entry in the scanner. The entry returned by the previous entry() call will be invalid.

Throws:
IOException

seekToEnd

public void seekToEnd()
               throws IOException
Seek to the end of the scanner. The entry returned by the previous entry() call will be invalid.

Throws:
IOException

lowerBound

public void lowerBound(byte[] key)
                throws IOException
Move the cursor to the first entry whose key is greater than or equal to the input key. Synonymous to lowerBound(key, 0, key.length). The entry returned by the previous entry() call will be invalid.

Parameters:
key - The input key
Throws:
IOException

lowerBound

public void lowerBound(byte[] key,
                       int keyOffset,
                       int keyLen)
                throws IOException
Move the cursor to the first entry whose key is greater than or equal to the input key. The entry returned by the previous entry() call will be invalid.

Parameters:
key - The input key
keyOffset - offset in the key buffer.
keyLen - key buffer length.
Throws:
IOException

upperBound

public void upperBound(byte[] key)
                throws IOException
Move the cursor to the first entry whose key is strictly greater than the input key. Synonymous to upperBound(key, 0, key.length). The entry returned by the previous entry() call will be invalid.

Parameters:
key - The input key
Throws:
IOException

upperBound

public void upperBound(byte[] key,
                       int keyOffset,
                       int keyLen)
                throws IOException
Move the cursor to the first entry whose key is strictly greater than the input key. The entry returned by the previous entry() call will be invalid.

Parameters:
key - The input key
keyOffset - offset in the key buffer.
keyLen - key buffer length.
Throws:
IOException

advance

public boolean advance()
                throws IOException
Move the cursor to the next key-value pair. The entry returned by the previous entry() call will be invalid.

Returns:
true if the cursor successfully moves. False when cursor is already at the end location and cannot be advanced.
Throws:
IOException

close

public void close()
           throws IOException
Close the scanner. Release all resources. The behavior of using the scanner after calling close is not defined. The entry returned by the previous entry() call will be invalid.

Specified by:
close in interface Closeable
Throws:
IOException

atEnd

public boolean atEnd()
Is cursor at the end location?

Returns:
true if the cursor is at the end location.

entry

public TFile.Reader.Scanner.Entry entry()
                                 throws IOException
Get an entry to access the key and value.

Returns:
The Entry object to access the key and value.
Throws:
IOException

getRecordNum

public long getRecordNum()
                  throws IOException
Get the RecordNum corresponding to the entry pointed by the cursor.

Returns:
The RecordNum corresponding to the entry pointed by the cursor.
Throws:
IOException


Copyright © 2009 The Apache Software Foundation