Class ClientSideIteratorScanner

java.lang.Object
org.apache.accumulo.core.client.impl.ScannerOptions
org.apache.accumulo.core.client.ClientSideIteratorScanner
All Implemented Interfaces:
AutoCloseable, Iterable<Map.Entry<Key,Value>>, Scanner, ScannerBase

public class ClientSideIteratorScanner extends org.apache.accumulo.core.client.impl.ScannerOptions implements Scanner
A scanner that instantiates iterators on the client side instead of on the tablet server. This can be useful for testing iterators or in cases where you don't want iterators affecting the performance of tablet servers.

Suggested usage:

 
 Scanner scanner = connector.createScanner(tableName, authorizations);
 scanner = new ClientSideIteratorScanner(scanner);
 
 

Iterators added to this scanner will be run in the client JVM. Separate scan iterators can be run on the server side and client side by adding iterators to the source scanner (which will execute server side) and to the client side scanner (which will execute client side).

  • Constructor Details

    • ClientSideIteratorScanner

      public ClientSideIteratorScanner(Scanner scanner)
      Constructs a scanner that can execute client-side iterators.
      Parameters:
      scanner - the source scanner
  • Method Details

    • setSource

      public void setSource(Scanner scanner)
      Sets the source Scanner.
    • iterator

      public Iterator<Map.Entry<Key,Value>> iterator()
      Description copied from interface: ScannerBase
      Returns an iterator over an accumulo table. This iterator uses the options that are currently set for its lifetime, so setting options will have no effect on existing iterators.

      Keys returned by the iterator are not guaranteed to be in sorted order.

      Specified by:
      iterator in interface Iterable<Map.Entry<Key,Value>>
      Specified by:
      iterator in interface ScannerBase
      Overrides:
      iterator in class org.apache.accumulo.core.client.impl.ScannerOptions
      Returns:
      an iterator over Key,Value pairs which meet the restrictions set on the scanner
    • getAuthorizations

      public Authorizations getAuthorizations()
      Description copied from interface: ScannerBase
      Returns the authorizations that have been set on the scanner
      Specified by:
      getAuthorizations in interface ScannerBase
      Overrides:
      getAuthorizations in class org.apache.accumulo.core.client.impl.ScannerOptions
      Returns:
      The authorizations set on the scanner instance
    • setTimeOut

      @Deprecated public void setTimeOut(int timeOut)
      Deprecated.
      Description copied from interface: Scanner
      This setting determines how long a scanner will automatically retry when a failure occurs. By default a scanner will retry forever.
      Specified by:
      setTimeOut in interface Scanner
      Parameters:
      timeOut - in seconds
    • getTimeOut

      @Deprecated public int getTimeOut()
      Deprecated.
      Description copied from interface: Scanner
      Returns the setting for how long a scanner will automatically retry when a failure occurs.
      Specified by:
      getTimeOut in interface Scanner
      Returns:
      the timeout configured for this scanner
    • setRange

      public void setRange(Range range)
      Description copied from interface: Scanner
      Sets the range of keys to scan over.
      Specified by:
      setRange in interface Scanner
      Parameters:
      range - key range to begin and end scan
    • getRange

      public Range getRange()
      Description copied from interface: Scanner
      Returns the range of keys to scan over.
      Specified by:
      getRange in interface Scanner
      Returns:
      the range configured for this scanner
    • setBatchSize

      public void setBatchSize(int size)
      Description copied from interface: Scanner
      Sets the number of Key/Value pairs that will be fetched at a time from a tablet server.
      Specified by:
      setBatchSize in interface Scanner
      Parameters:
      size - the number of Key/Value pairs to fetch per call to Accumulo
    • getBatchSize

      public int getBatchSize()
      Description copied from interface: Scanner
      Returns the batch size (number of Key/Value pairs) that will be fetched at a time from a tablet server.
      Specified by:
      getBatchSize in interface Scanner
      Returns:
      the batch size configured for this scanner
    • enableIsolation

      public void enableIsolation()
      Description copied from interface: Scanner
      Enables row isolation. Writes that occur to a row after a scan of that row has begun will not be seen if this option is enabled.
      Specified by:
      enableIsolation in interface Scanner
    • disableIsolation

      public void disableIsolation()
      Description copied from interface: Scanner
      Disables row isolation. Writes that occur to a row after a scan of that row has begun may be seen if this option is enabled.
      Specified by:
      disableIsolation in interface Scanner
    • getReadaheadThreshold

      public long getReadaheadThreshold()
      Description copied from interface: Scanner
      The number of batches of Key/Value pairs returned before the Scanner will begin to prefetch the next batch
      Specified by:
      getReadaheadThreshold in interface Scanner
      Returns:
      Number of batches before read-ahead begins
    • setReadaheadThreshold

      public void setReadaheadThreshold(long batches)
      Description copied from interface: Scanner
      Sets the number of batches of Key/Value pairs returned before the Scanner will begin to prefetch the next batch
      Specified by:
      setReadaheadThreshold in interface Scanner
      Parameters:
      batches - Non-negative number of batches
    • setIteratorSamplerConfiguration

      public void setIteratorSamplerConfiguration(SamplerConfiguration sc)
      This is provided for the case where no sampler configuration is set on the scanner, but there is a need to create iterator deep copies that have sampling enabled. If sampler configuration is set on the scanner, then this method does not need to be called inorder to create deep copies with sampling.

      Setting this differently than the scanners sampler configuration may cause exceptions.

      Since:
      1.8.0
    • clearIteratorSamplerConfiguration

      public void clearIteratorSamplerConfiguration()
      Clear any iterator sampler configuration.
      Since:
      1.8.0
    • getIteratorSamplerConfiguration

      public SamplerConfiguration getIteratorSamplerConfiguration()
      Returns:
      currently set iterator sampler configuration.
      Since:
      1.8.0