Package org.apache.accumulo.core.client
Interface BatchScanner
- All Superinterfaces:
AutoCloseable
,Iterable<Map.Entry<Key,
,Value>> 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.
Scanner
in 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
Scanner
instead 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.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.accumulo.core.client.ScannerBase
ScannerBase.ConsistencyLevel
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes any underlying connections on the scanner.void
setRanges
(Collection<Range> ranges) Allows scanning over multiple ranges efficiently.void
setTimeout
(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, forEach, getAuthorizations, getBatchTimeout, getClassLoaderContext, getConsistencyLevel, getSamplerConfiguration, getTimeout, iterator, removeScanIterator, setBatchTimeout, setClassLoaderContext, setConsistencyLevel, setExecutionHints, setSamplerConfiguration, stream, updateScanIteratorOption
-
Method Details
-
setRanges
Allows scanning over multiple ranges efficiently.- Parameters:
ranges
- specifies the non-overlapping ranges to query
-
close
void close()Description copied from interface:ScannerBase
Closes any underlying connections on the scanner. This may invalidate any iterators derived from the Scanner, causing them to throw exceptions.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceScannerBase
-
setTimeout
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
TimedOutException
when all needed servers timeout.- Specified by:
setTimeout
in interfaceScannerBase
- Parameters:
timeout
- the length of the timeouttimeUnit
- the units of the timeout
-