Package org.apache.druid.query.topn
Class BaseTopNAlgorithm<DimValSelector,DimValAggregateStore,Parameters extends TopNParams>
- java.lang.Object
-
- org.apache.druid.query.topn.BaseTopNAlgorithm<DimValSelector,DimValAggregateStore,Parameters>
-
- All Implemented Interfaces:
TopNAlgorithm<DimValSelector,Parameters>
- Direct Known Subclasses:
HeapBasedTopNAlgorithm
,PooledTopNAlgorithm
,TimeExtractionTopNAlgorithm
public abstract class BaseTopNAlgorithm<DimValSelector,DimValAggregateStore,Parameters extends TopNParams> extends Object implements TopNAlgorithm<DimValSelector,Parameters>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BaseTopNAlgorithm.AggregatorArrayProvider
protected static class
BaseTopNAlgorithm.BaseArrayProvider<T>
-
Field Summary
Fields Modifier and Type Field Description protected StorageAdapter
storageAdapter
-
Fields inherited from interface org.apache.druid.query.topn.TopNAlgorithm
EMPTY_ARRAY, INIT_POSITION_VALUE, SKIP_POSITION_VALUE
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
BaseTopNAlgorithm(StorageAdapter storageAdapter)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract void
closeAggregators(DimValAggregateStore dimValAggregateStore)
protected int
computeNewLength(DimValSelector dimValSelector, int numProcessed, int numToProcess)
Skip invalid value, calculate length to have enough valid value to process or hit the end.static Aggregator[]
makeAggregators(Cursor cursor, List<AggregatorFactory> aggregatorSpecs)
protected static BufferAggregator[]
makeBufferAggregators(Cursor cursor, List<AggregatorFactory> aggregatorSpecs)
protected abstract DimValAggregateStore
makeDimValAggregateStore(Parameters params)
protected abstract DimValSelector
makeDimValSelector(Parameters params, int numProcessed, int numToProcess)
static TopNResultBuilder
makeResultBuilder(TopNParams params, TopNQuery query)
void
run(Parameters params, TopNResultBuilder resultBuilder, DimValSelector dimValSelector, TopNQueryMetrics queryMetrics)
protected abstract long
scanAndAggregate(Parameters params, DimValSelector dimValSelector, DimValAggregateStore dimValAggregateStore)
Returns the number of processed rows (i.protected abstract DimValSelector
updateDimValSelector(DimValSelector dimValSelector, int numProcessed, int numToProcess)
protected abstract void
updateResults(Parameters params, DimValSelector dimValSelector, DimValAggregateStore dimValAggregateStore, TopNResultBuilder resultBuilder)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.druid.query.topn.TopNAlgorithm
cleanup, makeInitParams
-
-
-
-
Field Detail
-
storageAdapter
protected final StorageAdapter storageAdapter
-
-
Constructor Detail
-
BaseTopNAlgorithm
protected BaseTopNAlgorithm(StorageAdapter storageAdapter)
-
-
Method Detail
-
makeAggregators
public static Aggregator[] makeAggregators(Cursor cursor, List<AggregatorFactory> aggregatorSpecs)
-
makeBufferAggregators
protected static BufferAggregator[] makeBufferAggregators(Cursor cursor, List<AggregatorFactory> aggregatorSpecs)
-
run
public void run(Parameters params, TopNResultBuilder resultBuilder, DimValSelector dimValSelector, @Nullable TopNQueryMetrics queryMetrics)
- Specified by:
run
in interfaceTopNAlgorithm<DimValSelector,DimValAggregateStore>
-
makeDimValSelector
protected abstract DimValSelector makeDimValSelector(Parameters params, int numProcessed, int numToProcess)
-
computeNewLength
protected int computeNewLength(DimValSelector dimValSelector, int numProcessed, int numToProcess)
Skip invalid value, calculate length to have enough valid value to process or hit the end.- Parameters:
dimValSelector
- the dim value selector which record value is valid or invalid.numProcessed
- the start position to processnumToProcess
- the number of valid value to process- Returns:
- the length between which have enough valid value to process or hit the end.
-
updateDimValSelector
protected abstract DimValSelector updateDimValSelector(DimValSelector dimValSelector, int numProcessed, int numToProcess)
-
makeDimValAggregateStore
protected abstract DimValAggregateStore makeDimValAggregateStore(Parameters params)
-
scanAndAggregate
protected abstract long scanAndAggregate(Parameters params, DimValSelector dimValSelector, DimValAggregateStore dimValAggregateStore)
Returns the number of processed rows (i. e. after postFilters are applied inside the cursor being processed).
-
updateResults
protected abstract void updateResults(Parameters params, DimValSelector dimValSelector, DimValAggregateStore dimValAggregateStore, TopNResultBuilder resultBuilder)
-
closeAggregators
protected abstract void closeAggregators(DimValAggregateStore dimValAggregateStore)
-
makeResultBuilder
public static TopNResultBuilder makeResultBuilder(TopNParams params, TopNQuery query)
-
-