public class ConcurrentGrouper<KeyType extends Comparable<KeyType>> extends Object implements Grouper<KeyType>
SpillingGrouper instances. Thread-safe.
The passed-in buffer is cut up into concurrencyHint slices, and each slice is passed to a different underlying
grouper. Access to each slice is separately synchronized. As long as the result set fits in memory, keys are
partitioned between buffers based on their hash, and multiple threads can write into the same buffer. When
it becomes clear that the result set does not fit in memory, the table switches to a mode where each thread
gets its own buffer and its own spill files on disk.Grouper.Entry<T>, Grouper.KeyComparator, Grouper.KeySerde<T>, Grouper.KeySerdeFactory<T>| Constructor and Description |
|---|
ConcurrentGrouper(ByteBuffer buffer,
Grouper.KeySerdeFactory<KeyType> keySerdeFactory,
ColumnSelectorFactory columnSelectorFactory,
AggregatorFactory[] aggregatorFactories,
int bufferGrouperMaxSize,
float bufferGrouperMaxLoadFactor,
int bufferGrouperInitialBuckets,
LimitedTemporaryStorage temporaryStorage,
com.fasterxml.jackson.databind.ObjectMapper spillMapper,
int concurrencyHint) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
aggregate(KeyType key)
Aggregate the current row with the provided key.
|
boolean |
aggregate(KeyType key,
int keyHash)
Aggregate the current row with the provided key.
|
void |
close()
Close the grouper and release associated resources.
|
Iterator<Grouper.Entry<KeyType>> |
iterator(boolean sorted)
Iterate through entries.
|
void |
reset()
Reset the grouper to its initial state.
|
public ConcurrentGrouper(ByteBuffer buffer, Grouper.KeySerdeFactory<KeyType> keySerdeFactory, ColumnSelectorFactory columnSelectorFactory, AggregatorFactory[] aggregatorFactories, int bufferGrouperMaxSize, float bufferGrouperMaxLoadFactor, int bufferGrouperInitialBuckets, LimitedTemporaryStorage temporaryStorage, com.fasterxml.jackson.databind.ObjectMapper spillMapper, int concurrencyHint)
public boolean aggregate(KeyType key, int keyHash)
Grouperaggregate in interface Grouper<KeyType extends Comparable<KeyType>>key - key objectkeyHash - result of Groupers.hash(Object) on the keypublic boolean aggregate(KeyType key)
Grouperaggregate in interface Grouper<KeyType extends Comparable<KeyType>>key - keypublic void reset()
Grouperreset in interface Grouper<KeyType extends Comparable<KeyType>>public Iterator<Grouper.Entry<KeyType>> iterator(boolean sorted)
GrouperGrouper.close() (if you are done with the Grouper), Grouper.reset() (if you
want to reuse it), or Grouper.iterator(boolean) again if you want another iterator.
If "sorted" is true then the iterator will return sorted results. It will use KeyType's natural ordering on
deserialized objects, and will use the Grouper.KeySerde.comparator() on serialized objects. Woe be unto you
if these comparators are not equivalent.iterator in interface Grouper<KeyType extends Comparable<KeyType>>sorted - return sorted resultspublic void close()
Grouperclose in interface Grouper<KeyType extends Comparable<KeyType>>close in interface Closeableclose in interface AutoCloseableCopyright © 2011–2016. All rights reserved.