Package org.apache.accumulo.core.client
Interface BatchScanner
-
- All Superinterfaces:
AutoCloseable,Iterable<Map.Entry<Key,Value>>,ScannerBase
- All Known Implementing Classes:
TabletServerBatchDeleter,TabletServerBatchReader
public interface BatchScanner extends ScannerBase
In exchange for possibly returning scanned entries out of order, BatchScanner implementations may scan an Accumulo table more efficiently by- Looking up multiple ranges in parallel. Parallelism is constrained by the number of threads available to the BatchScanner, set in its constructor.
- Breaking up large ranges into subranges. Often the number and boundaries of subranges are determined by a table's split points.
- Combining multiple ranges into a single RPC call to a tablet server.
Scannerin use cases such as- Retrieving many small ranges
- Scanning a large range that returns many entries
- Running server-side iterators that perform computation, even if few entries are returned from the scan itself
Scannerinstead when sorted order is important.A BatchScanner instance will use no more threads than provided in the construction of the BatchScanner implementation. Multiple invocations of
iterator()will all share the same resources of the instance. A new BatchScanner instance should be created to use allocate additional threads.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidclose()Closes any underlying connections on the scanner.voidsetRanges(Collection<Range> ranges)Allows scanning over multiple ranges efficiently.voidsetTimeout(long timeout, TimeUnit timeUnit)This setting determines how long a scanner will automatically retry when a failure occurs.-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Methods inherited from interface org.apache.accumulo.core.client.ScannerBase
addScanIterator, clearClassLoaderContext, clearColumns, clearSamplerConfiguration, clearScanIterators, fetchColumn, fetchColumn, fetchColumn, fetchColumnFamily, fetchColumnFamily, getAuthorizations, getBatchTimeout, getClassLoaderContext, getSamplerConfiguration, getTimeout, iterator, removeScanIterator, setBatchTimeout, setClassLoaderContext, setExecutionHints, setSamplerConfiguration, updateScanIteratorOption
-
-
-
-
Method Detail
-
setRanges
void setRanges(Collection<Range> ranges)
Allows scanning over multiple ranges efficiently.- Parameters:
ranges- specifies the non-overlapping ranges to query
-
close
void close()
Description copied from interface:ScannerBaseCloses any underlying connections on the scanner. This may invalidate any iterators derived from the Scanner, causing them to throw exceptions.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceScannerBase
-
setTimeout
void setTimeout(long timeout, TimeUnit timeUnit)This setting determines how long a scanner will automatically retry when a failure occurs. By default, a scanner will retry forever.Setting the timeout to zero (with any time unit) or
Long.MAX_VALUE(withTimeUnit.MILLISECONDS) means no timeout.The batch scanner will accomplish as much work as possible before throwing an exception. BatchScanner iterators will throw a
TimedOutExceptionwhen all needed servers timeout.- Specified by:
setTimeoutin interfaceScannerBase- Parameters:
timeout- the length of the timeouttimeUnit- the units of the timeout
-
-