Class GroupAggregator<K,V,T,E,R>
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.util.BitHelper
-
- com.tangosol.util.ExternalizableHelper
-
- com.tangosol.util.aggregator.GroupAggregator<K,V,T,E,R>
-
- Type Parameters:
K
- the type of the Map entry keysV
- the type of the Map entry valuesT
- the type of the value to extract fromE
- the type of the extracted valueR
- the type of the group aggregator result
- All Implemented Interfaces:
ExternalizableLite
,PortableObject
,InvocableMap.EntryAggregator<K,V,Map<E,R>>
,InvocableMap.StreamingAggregator<K,V,Map<E,Object>,Map<E,R>>
,Serializable
- Direct Known Subclasses:
GroupAggregator.Parallel
public class GroupAggregator<K,V,T,E,R> extends ExternalizableHelper implements InvocableMap.StreamingAggregator<K,V,Map<E,Object>,Map<E,R>>, ExternalizableLite, PortableObject
The GroupAggregator provides an ability to split a subset of entries in an InvocableMap into a collection of non-intersecting subsets and then aggregate them separately and independently. The splitting (grouping) is performed using the results of the underlying ValueExtractor in such a way that two entries will belong to the same group if and only if the result of the correspondingextract
call produces the same value or tuple (list of values). After the entries are split into the groups, the underlying aggregator is applied separately to each group. The result of the aggregation by the GroupAggregator is a Map that has distinct values (or tuples) as keys and results of the individual aggregation as values. Additionally, those results could be further reduced using an optional Filter object.Informally speaking, this aggregator is analogous to the SQL "group by" and "having" clauses. Note that the "having" Filter is applied independently on each server against the partial aggregation results; this generally implies that data affinity is required to ensure that all required data used to generate a given result exists within a single cache partition. In other words, the "group by" predicate should not span multiple partitions if the "having" clause is used.
The GroupAggregator is somewhat similar to the
DistinctValues
aggregator, which returns back a list of distinct values (tuples) without performing any additional aggregation work.Unlike many other concrete EntryAggregator implementations that are constructed directly, instances of GroupAggregator should only be created using one of the factory methods:
createInstance(extractor, aggregator)
,createInstance(extractor, aggregator, filter)
,createInstance(sMethod, aggregator)
createInstance(sMethod, aggregator, filter)
- Since:
- Coherence 3.2
- Author:
- gg 2006.02.15, as 2014.11.09
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
GroupAggregator.Parallel<K,V,T,E,R>
Deprecated.As of Coherence 12.2.1.-
Nested classes/interfaces inherited from class com.tangosol.util.ExternalizableHelper
ExternalizableHelper.DecoratedMultiBufferReadBuffer, ExternalizableHelper.DefaultObjectStreamFactory, ExternalizableHelper.FormatAwareCompressor, ExternalizableHelper.IntDecoratedObject, ExternalizableHelper.Shielded, ExternalizableHelper.ShieldedDataOutputStream, ExternalizableHelper.ShieldedInputStream, ExternalizableHelper.ShieldedObjectOutputStream, ExternalizableHelper.ShieldedOutputStream, ExternalizableHelper.SimpleXmlBeanClassCache, ExternalizableHelper.Stats, ExternalizableHelper.XmlBeanClassCache
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Field Summary
Fields Modifier and Type Field Description protected InvocableMap.EntryAggregator<? super K,? super V,R>
m_aggregator
The underlying EntryAggregator.protected ValueExtractor<? super T,? extends E>
m_extractor
The underlying ValueExtractor.protected Filter
m_filter
The Filter object representing the "having" clause of this "group by" aggregator.protected boolean
m_fInit
Flag specifying whether this aggregator has been initialized.protected boolean
m_fParallel
Flag specifying whether parallel optimizations can be used.protected boolean
m_fStreaming
Flag specifying whether streaming optimizations can be used.protected Map<E,Object>
m_mapResults
A map of partial results to aggregate.-
Fields inherited from class com.tangosol.util.ExternalizableHelper
BINARY_SIZE, CHUNK_SIZE, CHUNK_THRESHOLD, CONVERTER_FROM_BINARY, CONVERTER_STRIP_INTDECO, CONVERTER_TO_BINARY, DECO_APP_1, DECO_APP_2, DECO_APP_3, DECO_BACKUP, DECO_CUSTOM, DECO_EXPIRY, DECO_ID_MAX, DECO_ID_MIN, DECO_JCACHE, DECO_JCACHE_SYNTHETIC, DECO_MEMCACHED, DECO_PUSHREP, DECO_QUEUE_METADATA, DECO_RSVD_1, DECO_STORE, DECO_TX, DECO_VALUE, DECO_WLS, EMPTY_BINARY_ARRAY, FMT_B_ARRAY, FMT_BIN_DECO, FMT_BIN_EXT_DECO, FMT_BINARY, FMT_BOOLEAN, FMT_BYTE, FMT_DECIMAL, FMT_DOUBLE, FMT_EXT, FMT_FLOAT, FMT_IDO, FMT_INT, FMT_INTEGER, FMT_LONG, FMT_NONE, FMT_NULL, FMT_OBJ_EXT, FMT_OBJ_SER, FMT_OPT, FMT_OPT_DOUBLE, FMT_OPT_INT, FMT_OPT_LONG, FMT_SHORT, FMT_STRING, FMT_UNKNOWN, FMT_XML_BEAN, FMT_XML_SER, FORCE_RESOLVING_STREAMS, LAMBDA_SERIALIZATION, MAX_DECO_HEADER_BYTES, PACKED_INT_SIZE, PACKED_LONG_SIZE, PROPERTY_CONFIG, s_streamfactory, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE
-
Fields inherited from class com.tangosol.util.Base
LOG_ALWAYS, LOG_CONFIG, LOG_DEBUG, LOG_ERR, LOG_INFO, LOG_MAX, LOG_MIN, LOG_QUIET, LOG_WARN, POWER_0, POWER_G, POWER_K, POWER_M, POWER_T, UNIT_D, UNIT_H, UNIT_M, UNIT_MS, UNIT_NS, UNIT_S, UNIT_US
-
Fields inherited from interface com.tangosol.util.InvocableMap.StreamingAggregator
ALLOW_INCONSISTENCIES, BY_MEMBER, BY_PARTITION, PARALLEL, PRESENT_ONLY, RETAINS_ENTRIES, SERIAL
-
-
Constructor Summary
Constructors Modifier Constructor Description GroupAggregator()
Default constructor (necessary for the ExternalizableLite interface).protected
GroupAggregator(ValueExtractor<? super T,? extends E> extractor, InvocableMap.EntryAggregator<? super K,? super V,R> aggregator, Filter filter)
Construct a GroupAggregator based on a specified ValueExtractor and underlying EntryAggregator.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
accumulate(InvocableMap.Entry<? extends K,? extends V> entry)
Accumulate one entry into the result.int
characteristics()
A bit mask representing the set of characteristics of this aggregator.boolean
combine(Map<E,Object> partialResult)
Merge another partial result into the result.static <K,V,T,E,R>
GroupAggregator<K,V,T,E,R>createInstance(ValueExtractor<? super T,? extends E> extractor, InvocableMap.EntryAggregator<? super K,? super V,R> aggregator, Filter filter)
Create an instance of GroupAggregator based on a specified extractor and anEntryAggregator
and a result evaluation filter.static <K,V,T,E,R>
GroupAggregator<K,V,T,E,R>createInstance(ValueExtractor<? super T,? extends E> extractor, InvocableMap.EntryAggregator<K,V,R> aggregator)
Create an instance of GroupAggregator based on a specified extractor and anEntryAggregator
.static <K,V,R>
GroupAggregator<K,V,Object,Object,R>createInstance(String sMethod, InvocableMap.EntryAggregator<K,V,R> aggregator)
Create an instance of GroupAggregator based on a specified method name(s) and anEntryAggregator
.static <K,V,R>
GroupAggregator<K,V,Object,Object,R>createInstance(String sMethod, InvocableMap.EntryAggregator<K,V,R> aggregator, Filter filter)
Create an instance of GroupAggregator based on a specified method name(s), anEntryAggregator
and a result evaluation filter.protected void
ensureInitialized()
Ensure that this aggregator is initialized.boolean
equals(Object o)
Compare the GroupAggregator with another object to determine equality.Map<E,R>
finalizeResult()
Return the final result of the aggregation.InvocableMap.EntryAggregator<? super K,? super V,R>
getAggregator()
Obtain the underlying EntryAggregator.ValueExtractor<?,? extends E>
getExtractor()
Obtain the underlying ValueExtractor.Map<E,Object>
getPartialResult()
Return the partial result of the aggregation.int
hashCode()
Determine a hash value for the GroupAggregator object according to the generalObject.hashCode()
contract.protected boolean
isDelegateParallel()
Returntrue
if the underlying aggregator is a ParallelAwareAggregator.protected boolean
isDelegateStreaming()
Returntrue
if the underlying aggregator is a StreamingAggregator.protected InvocableMap.ParallelAwareAggregator<? super K,? super V,Object,R>
parallel(InvocableMap.EntryAggregator<? super K,? super V,R> aggregator)
Convert the specified aggregator to ParallelAwareAggregator.void
readExternal(PofReader in)
Restore the contents of a user type instance by reading its state using the specified PofReader object.void
readExternal(DataInput in)
Restore the contents of this object by loading the object's state from the passed DataInput object.protected InvocableMap.StreamingAggregator<? super K,? super V,Object,R>
streaming(InvocableMap.EntryAggregator<? super K,? super V,R> aggregator)
Convert the specified aggregator to StreamingAggregator.InvocableMap.StreamingAggregator<K,V,Map<E,Object>,Map<E,R>>
supply()
Create a new instance of this aggregator.protected static <T> BinaryOperator<T>
throwingMerger()
String
toString()
Return a human-readable description for this GroupAggregator.void
writeExternal(PofWriter out)
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.void
writeExternal(DataOutput out)
Save the contents of this object by storing the object's state into the passed DataOutput object.-
Methods inherited from class com.tangosol.util.ExternalizableHelper
asBinary, calculatePackedLength, calculatePackedLength, checkObjectInputFilter, checkObjectInputFilter, checkObjectInputFilter, convertUTF, decodeExpiry, decorate, decorate, decorate, decorate, decorate, decorateBinary, encodeExpiry, ensureSerializer, extractIntDecoration, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromByteArray, fromByteArray, getClass, getConfigSerialFilter, getConfigSerialFilterFactory, getDecoration, getDecoration, getDecorations, getDeltaCompressor, getInputStream, getNewObjectInput, getObjectInput, getObjectInputFilter, getObjectOutput, getObjectStreamFactory, getOutputStream, getShieldedOutputStream, getStreamFormat, getUndecorated, getUndecorated, isDecorated, isDecorated, isIntDecorated, isIntDecorated, isPatchCompatible, isPatchCompatible, isResolving, isSerializable, isSerializerCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, loadClass, loadResource, main, makeTrint, readBigDecimal, readBigInteger, readBooleanArray, readBooleanArray, readByteArray, readCharArray, readCharArray, readCollection, readDate, readDoubleArray, readDoubleArray, readExternalizableLite, readExternalizableLite, readFloatArray, readFloatArray, readInt, readInt, readIntArray, readIntArray, readIntArray2d, readLargeBooleanArray, readLargeByteArray, readLargeCharArray, readLargeDoubleArray, readLargeFloatArray, readLargeIntArray, readLargeLongArray, readLargeObjectArray, readLargeStringArray, readLong, readLong, readLongArray, readLongArray, readMap, readMap, readObject, readObject, readObjectArray, readObjectArray, readSafeUTF, readSafeUTF, readSerializable, readSerializable, readStringArray, readStringArray, readTime, readTimestamp, readTrint, readUnsignedTrint, readUTF, readXmlBean, readXmlSerializable, readXmlSerializable, realize, removeIntDecoration, removeIntDecoration, replace, reportIncompatibleSerializers, setObjectStreamFactory, toBinary, toBinary, toBinary, toByteArray, toByteArray, toByteArray, toLiteBinary, toLong, undecorate, undecorate, validateBufferSize, validateLoadArray, validateLoadClass, writeBigDecimal, writeBigInteger, writeBooleanArray, writeByteArray, writeCollection, writeDate, writeDoubleArray, writeExternalizableLite, writeFloatArray, writeInt, writeInt, writeIntArray2d, writeLong, writeLong, writeMap, writeObject, writeSafeUTF, writeSafeUTF, writeSerializable, writeStringArray, writeTime, writeTimestamp, writeTrint, writeTrint, writeUTF, writeXmlBean, writeXmlSerializable
-
Methods inherited from class com.tangosol.util.BitHelper
countBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, rotateLeft, rotateLeft, rotateLeft, rotateRight, rotateRight, rotateRight, toBitString, toBitString, toBitString, toBytes, toBytes, toBytes, toBytes, toInt, toInt, toLong
-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.tangosol.util.InvocableMap.StreamingAggregator
accumulate, aggregate, isAllowInconsistencies, isByMember, isByPartition, isParallel, isPresentOnly, isRetainsEntries, isSerial
-
-
-
-
Field Detail
-
m_extractor
protected ValueExtractor<? super T,? extends E> m_extractor
The underlying ValueExtractor.
-
m_aggregator
protected InvocableMap.EntryAggregator<? super K,? super V,R> m_aggregator
The underlying EntryAggregator.
-
m_filter
protected Filter m_filter
The Filter object representing the "having" clause of this "group by" aggregator.
-
m_fInit
protected transient boolean m_fInit
Flag specifying whether this aggregator has been initialized.
-
m_fStreaming
protected transient boolean m_fStreaming
Flag specifying whether streaming optimizations can be used.
-
m_fParallel
protected transient boolean m_fParallel
Flag specifying whether parallel optimizations can be used.
-
-
Constructor Detail
-
GroupAggregator
public GroupAggregator()
Default constructor (necessary for the ExternalizableLite interface).
-
GroupAggregator
protected GroupAggregator(ValueExtractor<? super T,? extends E> extractor, InvocableMap.EntryAggregator<? super K,? super V,R> aggregator, Filter filter)
Construct a GroupAggregator based on a specified ValueExtractor and underlying EntryAggregator.- Parameters:
extractor
- a ValueExtractor object that is used to split InvocableMap entries into non-intersecting subsets; may not be nullaggregator
- an EntryAggregator object; may not be nullfilter
- an optional Filter object used to filter out results of individual group aggregation results
-
-
Method Detail
-
supply
public InvocableMap.StreamingAggregator<K,V,Map<E,Object>,Map<E,R>> supply()
Description copied from interface:InvocableMap.StreamingAggregator
Create a new instance of this aggregator.
-
accumulate
public boolean accumulate(InvocableMap.Entry<? extends K,? extends V> entry)
Description copied from interface:InvocableMap.StreamingAggregator
Accumulate one entry into the result.- Specified by:
accumulate
in interfaceInvocableMap.StreamingAggregator<K,V,T,E>
- Parameters:
entry
- the entry to accumulate into the aggregation result- Returns:
true
to continue the aggregation, andfalse
to signal to the caller that the result is ready and the aggregation can be short-circuited
-
combine
public boolean combine(Map<E,Object> partialResult)
Description copied from interface:InvocableMap.StreamingAggregator
Merge another partial result into the result.
-
getPartialResult
public Map<E,Object> getPartialResult()
Description copied from interface:InvocableMap.StreamingAggregator
Return the partial result of the aggregation.- Specified by:
getPartialResult
in interfaceInvocableMap.StreamingAggregator<K,V,T,E>
- Returns:
- the partial result of the aggregation
-
finalizeResult
public Map<E,R> finalizeResult()
Description copied from interface:InvocableMap.StreamingAggregator
Return the final result of the aggregation.- Specified by:
finalizeResult
in interfaceInvocableMap.StreamingAggregator<K,V,T,E>
- Returns:
- the final result of the aggregation
-
characteristics
public int characteristics()
Description copied from interface:InvocableMap.StreamingAggregator
A bit mask representing the set of characteristics of this aggregator.By default, characteristics are a combination of
InvocableMap.StreamingAggregator.PARALLEL
andInvocableMap.StreamingAggregator.RETAINS_ENTRIES
, which is sub-optimal and should be overridden by the aggregator implementation if the aggregator does not need to retain entries (which is often the case).- Specified by:
characteristics
in interfaceInvocableMap.StreamingAggregator<K,V,T,E>
- Returns:
- a bit mask representing the set of characteristics of this aggregator
- See Also:
InvocableMap.StreamingAggregator.ALLOW_INCONSISTENCIES
,InvocableMap.StreamingAggregator.BY_MEMBER
,InvocableMap.StreamingAggregator.BY_PARTITION
,InvocableMap.StreamingAggregator.PARALLEL
,InvocableMap.StreamingAggregator.PRESENT_ONLY
,InvocableMap.StreamingAggregator.RETAINS_ENTRIES
,InvocableMap.StreamingAggregator.SERIAL
-
getExtractor
public ValueExtractor<?,? extends E> getExtractor()
Obtain the underlying ValueExtractor.- Returns:
- the underlying ValueExtractor
-
getAggregator
public InvocableMap.EntryAggregator<? super K,? super V,R> getAggregator()
Obtain the underlying EntryAggregator.- Returns:
- the underlying EntryAggregator
-
ensureInitialized
protected void ensureInitialized()
Ensure that this aggregator is initialized.
-
streaming
protected InvocableMap.StreamingAggregator<? super K,? super V,Object,R> streaming(InvocableMap.EntryAggregator<? super K,? super V,R> aggregator)
Convert the specified aggregator to StreamingAggregator.- Parameters:
aggregator
- the aggregator to convert- Returns:
- an instance of a StreamingAggregator
-
parallel
protected InvocableMap.ParallelAwareAggregator<? super K,? super V,Object,R> parallel(InvocableMap.EntryAggregator<? super K,? super V,R> aggregator)
Convert the specified aggregator to ParallelAwareAggregator.- Parameters:
aggregator
- the aggregator to convert- Returns:
- an instance of a ParallelAwareAggregator
-
isDelegateStreaming
protected boolean isDelegateStreaming()
Returntrue
if the underlying aggregator is a StreamingAggregator.- Returns:
true
if the underlying aggregator is a StreamingAggregator
-
isDelegateParallel
protected boolean isDelegateParallel()
Returntrue
if the underlying aggregator is a ParallelAwareAggregator.- Returns:
true
if the underlying aggregator is a ParallelAwareAggregator
-
throwingMerger
protected static <T> BinaryOperator<T> throwingMerger()
-
readExternal
public void readExternal(DataInput in) throws IOException
Description copied from interface:ExternalizableLite
Restore the contents of this object by loading the object's state from the passed DataInput object.- Specified by:
readExternal
in interfaceExternalizableLite
- Parameters:
in
- the DataInput stream to read data from in order to restore the state of this object- Throws:
IOException
- if an I/O exception occursNotActiveException
- if the object is not in its initial state, and therefore cannot be deserialized into
-
writeExternal
public void writeExternal(DataOutput out) throws IOException
Description copied from interface:ExternalizableLite
Save the contents of this object by storing the object's state into the passed DataOutput object.- Specified by:
writeExternal
in interfaceExternalizableLite
- Parameters:
out
- the DataOutput stream to write the state of this object to- Throws:
IOException
- if an I/O exception occurs
-
readExternal
public void readExternal(PofReader in) throws IOException
Description copied from interface:PortableObject
Restore the contents of a user type instance by reading its state using the specified PofReader object.- Specified by:
readExternal
in interfacePortableObject
- Parameters:
in
- the PofReader from which to read the object's state- Throws:
IOException
- if an I/O error occurs
-
writeExternal
public void writeExternal(PofWriter out) throws IOException
Description copied from interface:PortableObject
Save the contents of a POF user type instance by writing its state using the specified PofWriter object.- Specified by:
writeExternal
in interfacePortableObject
- Parameters:
out
- the PofWriter to which to write the object's state- Throws:
IOException
- if an I/O error occurs
-
equals
public boolean equals(Object o)
Compare the GroupAggregator with another object to determine equality.
-
hashCode
public int hashCode()
Determine a hash value for the GroupAggregator object according to the generalObject.hashCode()
contract.
-
toString
public String toString()
Return a human-readable description for this GroupAggregator.
-
createInstance
public static <K,V,R> GroupAggregator<K,V,Object,Object,R> createInstance(String sMethod, InvocableMap.EntryAggregator<K,V,R> aggregator)
Create an instance of GroupAggregator based on a specified method name(s) and anEntryAggregator
.
If the specified underlying aggregator is an instance ofParallelAwareAggregator
, then a parallel-aware instance of the GroupAggregator will be created. Otherwise, the resulting GroupAggregator will not be parallel-aware and could be ill-suited for aggregations run against large partitioned caches.- Parameters:
sMethod
- a method name or a comma-delimited sequence of names that results in aReflectionExtractor
or aMultiExtractor
that will be used to split InvocableMap entries into distinct groupsaggregator
- an underlying EntryAggregator
-
createInstance
public static <K,V,R> GroupAggregator<K,V,Object,Object,R> createInstance(String sMethod, InvocableMap.EntryAggregator<K,V,R> aggregator, Filter filter)
Create an instance of GroupAggregator based on a specified method name(s), anEntryAggregator
and a result evaluation filter.
If the specified underlying aggregator is an instance ofParallelAwareAggregator
, then a parallel-aware instance of the GroupAggregator will be created. Otherwise, the resulting GroupAggregator will not be parallel-aware and could be ill-suited for aggregations run against large partitioned caches.- Parameters:
sMethod
- a method name or a comma-delimited sequence of names that results in aReflectionExtractor
or aMultiExtractor
that will be used to split InvocableMap entries into distinct groupsaggregator
- an underlying EntryAggregatorfilter
- an optional Filter object that will be used to evaluate results of each individual group aggregation
-
createInstance
public static <K,V,T,E,R> GroupAggregator<K,V,T,E,R> createInstance(ValueExtractor<? super T,? extends E> extractor, InvocableMap.EntryAggregator<K,V,R> aggregator)
Create an instance of GroupAggregator based on a specified extractor and anEntryAggregator
.
If the specified aggregator is an instance ofParallelAwareAggregator
, then a parallel-aware instance of the GroupAggregator will be created. Otherwise, the resulting GroupAggregator will not be parallel-aware and could be ill-suited for aggregations run against large partitioned caches.- Parameters:
extractor
- a ValueExtractor that will be used to split a set of InvocableMap entries into distinct groupsaggregator
- an underlying EntryAggregator
-
createInstance
public static <K,V,T,E,R> GroupAggregator<K,V,T,E,R> createInstance(ValueExtractor<? super T,? extends E> extractor, InvocableMap.EntryAggregator<? super K,? super V,R> aggregator, Filter filter)
Create an instance of GroupAggregator based on a specified extractor and anEntryAggregator
and a result evaluation filter.
If the specified aggregator is an instance ofParallelAwareAggregator
, then a parallel-aware instance of the GroupAggregator will be created. Otherwise, the resulting GroupAggregator will not be parallel-aware and could be ill-suited for aggregations run against large partitioned caches.- Parameters:
extractor
- a ValueExtractor that will be used to split a set of InvocableMap entries into distinct groupsaggregator
- an underlying EntryAggregatorfilter
- an optional Filter object used to filter out results of individual group aggregation results
-
-