public interface ScannerBase extends Iterable<Map.Entry<Key,Value>>, AutoCloseable
Modifier and Type | Method and Description |
---|---|
void |
addScanIterator(IteratorSetting cfg)
Add a server-side scan iterator.
|
void |
clearClassLoaderContext()
Clears the current classloader context set on this scanner
|
void |
clearColumns()
Clears the columns to be fetched (useful for resetting the scanner for reuse).
|
void |
clearSamplerConfiguration()
Clears sampler configuration making a scanner read all data.
|
void |
clearScanIterators()
Clears scan iterators prior to returning a scanner to the pool.
|
void |
close()
Closes any underlying connections on the scanner.
|
void |
fetchColumn(IteratorSetting.Column column)
Adds a column to the list of columns that will be fetch by this scanner.
|
void |
fetchColumn(org.apache.hadoop.io.Text colFam,
org.apache.hadoop.io.Text colQual)
Adds a column to the list of columns that will be fetched by this scanner.
|
void |
fetchColumnFamily(org.apache.hadoop.io.Text col)
Adds a column family to the list of columns that will be fetched by this scanner.
|
Authorizations |
getAuthorizations()
Returns the authorizations that have been set on the scanner
|
long |
getBatchTimeout(TimeUnit timeUnit)
Returns the timeout to fill a batch in the given TimeUnit.
|
String |
getClassLoaderContext()
Returns the name of the current classloader context set on this scanner
|
SamplerConfiguration |
getSamplerConfiguration() |
long |
getTimeout(TimeUnit timeUnit)
Returns the setting for how long a scanner will automatically retry when a failure occurs.
|
Iterator<Map.Entry<Key,Value>> |
iterator()
Returns an iterator over an accumulo table.
|
void |
removeScanIterator(String iteratorName)
Remove an iterator from the list of iterators.
|
void |
setBatchTimeout(long timeOut,
TimeUnit timeUnit)
This setting determines how long a scanner will wait to fill the returned batch.
|
void |
setClassLoaderContext(String classLoaderContext)
Sets the name of the classloader context on this scanner.
|
void |
setSamplerConfiguration(SamplerConfiguration samplerConfig)
Setting this will cause the scanner to read sample data, as long as that sample data was
generated with the given configuration.
|
void |
setTimeout(long timeOut,
TimeUnit timeUnit)
This setting determines how long a scanner will automatically retry when a failure occurs.
|
void |
updateScanIteratorOption(String iteratorName,
String key,
String value)
Update the options for an iterator.
|
forEach, spliterator
void addScanIterator(IteratorSetting cfg)
cfg
- fully specified scan-time iterator, including all options for the iterator. Any
changes to the iterator setting after this call are not propagated to the stored
iterator.IllegalArgumentException
- if the setting conflicts with existing iteratorsvoid removeScanIterator(String iteratorName)
iteratorName
- nickname used for the iteratorvoid updateScanIteratorOption(String iteratorName, String key, String value)
iteratorName
- the name of the iterator to changekey
- the name of the optionvalue
- the new value for the named optionvoid fetchColumnFamily(org.apache.hadoop.io.Text col)
This can help limit which locality groups are read on the server side.
When used in conjunction with custom iterators, the set of column families fetched is passed to the top iterator's seek method. Custom iterators may change this set of column families when calling seek on their source.
col
- the column family to be fetchedvoid fetchColumn(org.apache.hadoop.io.Text colFam, org.apache.hadoop.io.Text colQual)
WARNING. Using this method with custom iterators may have unexpected results. Iterators have control over which column families are fetched. However iterators have no control over which column qualifiers are fetched. When this method is called it activates a system iterator that only allows the requested family/qualifier pairs through. This low level filtering prevents custom iterators from requesting additional column families when calling seek.
For an example, assume fetchColumns(A, Q1) and fetchColumns(B,Q1) is called on a scanner and a custom iterator is configured. The families (A,B) will be passed to the seek method of the custom iterator. If the custom iterator seeks its source iterator using the families (A,B,C), it will never see any data from C because the system iterator filtering A:Q1 and B:Q1 will prevent the C family from getting through. ACCUMULO-3905 also has an example of the type of problem this method can cause.
tl;dr If using a custom iterator with a seek method that adds column families, then may want to avoid using this method.
colFam
- the column family of the column to be fetchedcolQual
- the column qualifier of the column to be fetchedvoid fetchColumn(IteratorSetting.Column column)
column
- the IteratorSetting.Column
to fetchvoid clearColumns()
void clearScanIterators()
Iterator<Map.Entry<Key,Value>> iterator()
Keys returned by the iterator are not guaranteed to be in sorted order.
void setTimeout(long timeOut, TimeUnit timeUnit)
Setting the timeout to zero (with any time unit) or Long.MAX_VALUE
(with
TimeUnit.MILLISECONDS
) means no timeout.
timeOut
- the length of the timeouttimeUnit
- the units of the timeoutlong getTimeout(TimeUnit timeUnit)
void close()
close
in interface AutoCloseable
Authorizations getAuthorizations()
void setSamplerConfiguration(SamplerConfiguration samplerConfig)
One way to use this method is as follows, where the sampler configuration is obtained from the table configuration. Sample data can be generated in many different ways, so its important to verify the sample data configuration meets expectations.
// could cache this if creating many scanners to avoid RPCs.
SamplerConfiguration samplerConfig =
connector.tableOperations().getSamplerConfiguration(table);
// verify table's sample data is generated in an expected way before using
userCode.verifySamplerConfig(samplerConfig);
scanner.setSamplerCongiguration(samplerConfig);
Of course this is not the only way to obtain a SamplerConfiguration
, it could be a
constant, configuration, etc.
If sample data is not present or sample data was generated with a different configuration, then
the scanner iterator will throw a SampleNotPresentException
. Also if a table's sampler
configuration is changed while a scanner is iterating over a table, a
SampleNotPresentException
may be thrown.
SamplerConfiguration getSamplerConfiguration()
void clearSamplerConfiguration()
getSamplerConfiguration()
should return null.void setBatchTimeout(long timeOut, TimeUnit timeUnit)
Setting the timeout to zero (with any time unit) or Long.MAX_VALUE
(with
TimeUnit.MILLISECONDS
) means no timeout.
timeOut
- the length of the timeouttimeUnit
- the units of the timeoutlong getBatchTimeout(TimeUnit timeUnit)
void setClassLoaderContext(String classLoaderContext)
classLoaderContext
- name of the classloader contextNullPointerException
- if context is nullvoid clearClassLoaderContext()
String getClassLoaderContext()
Copyright © 2011–2019 The Apache Software Foundation. All rights reserved.