Class TFile.Reader.Scanner

java.lang.Object
org.apache.hadoop.io.file.tfile.TFile.Reader.Scanner
All Implemented Interfaces:
Closeable, AutoCloseable
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

    Nested Classes
    Modifier and Type
    Class
    Description
    class 
    Entry to a <Key, Value> pair.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Scanner(TFile.Reader reader, long offBegin, long offEnd)
    Constructor
    protected
    Scanner(TFile.Reader reader, RawComparable beginKey, RawComparable endKey)
    Constructor
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Move the cursor to the next key-value pair.
    boolean
    Is cursor at the end location?
    void
    Close the scanner.
    Get an entry to access the key and value.
    long
    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 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
    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 Details

    • Scanner

      protected 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.
    • Scanner

      protected 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 <K, V> entry of the TFile.
      endKey - End key of the scan. If null, scan up to the last <K, V> entry of the TFile.
      Throws:
      IOException - raised on errors performing I/O.
  • Method Details

    • 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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.
    • 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 AutoCloseable
      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 - raised on errors performing I/O.
    • 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 - raised on errors performing I/O.