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 classBaseTopNAlgorithm.AggregatorArrayProviderprotected static classBaseTopNAlgorithm.BaseArrayProvider<T>
-
Field Summary
Fields Modifier and Type Field Description protected TopNCursorInspectorcursorInspector-
Fields inherited from interface org.apache.druid.query.topn.TopNAlgorithm
EMPTY_ARRAY, INIT_POSITION_VALUE, SKIP_POSITION_VALUE
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedBaseTopNAlgorithm(TopNCursorInspector cursorInspector)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected intcomputeNewLength(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 DimValAggregateStoremakeDimValAggregateStore(Parameters params)protected abstract DimValSelectormakeDimValSelector(Parameters params, int numProcessed, int numToProcess)static TopNResultBuildermakeResultBuilder(TopNParams params, TopNQuery query)protected abstract voidresetAggregators(DimValAggregateStore dimValAggregateStore)voidrun(Parameters params, TopNResultBuilder resultBuilder, DimValSelector dimValSelector, TopNQueryMetrics queryMetrics)protected abstract longscanAndAggregate(Parameters params, DimValSelector dimValSelector, DimValAggregateStore dimValAggregateStore)Returns the number of processed rows (i.protected abstract DimValSelectorupdateDimValSelector(DimValSelector dimValSelector, int numProcessed, int numToProcess)protected abstract voidupdateResults(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
-
cursorInspector
protected TopNCursorInspector cursorInspector
-
-
Constructor Detail
-
BaseTopNAlgorithm
protected BaseTopNAlgorithm(TopNCursorInspector cursorInspector)
-
-
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:
runin 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)
-
resetAggregators
protected abstract void resetAggregators(DimValAggregateStore dimValAggregateStore)
-
makeResultBuilder
public static TopNResultBuilder makeResultBuilder(TopNParams params, TopNQuery query)
-
-