public abstract class IncrementalIndex<AggregatorType> extends AbstractIndex implements Iterable<Row>, Closeable
| Modifier and Type | Class and Description |
|---|---|
static class |
IncrementalIndex.Builder |
static class |
IncrementalIndex.DimensionDesc |
static class |
IncrementalIndex.MetricDesc |
| Modifier | Constructor and Description |
|---|---|
protected |
IncrementalIndex(IncrementalIndexSchema incrementalIndexSchema,
boolean deserializeComplexMetrics,
boolean reportParseExceptions,
boolean concurrentEventAdd)
Setting deserializeComplexMetrics to false is necessary for intermediate aggregation such as groupBy that
should not deserialize input columns using ComplexMetricSerde for aggregators that return complex metrics.
|
| Modifier and Type | Method and Description |
|---|---|
IncrementalIndexAddResult |
add(InputRow row)
Adds a new row.
|
IncrementalIndexAddResult |
add(InputRow row,
boolean skipMaxRowsInMemoryCheck) |
protected abstract org.apache.druid.segment.incremental.IncrementalIndex.AddToFactsResult |
addToFacts(InputRow row,
IncrementalIndexRow key,
ThreadLocal<InputRow> rowContainer,
com.google.common.base.Supplier<InputRow> rowSupplier,
boolean skipMaxRowsInMemoryCheck) |
abstract boolean |
canAppendRow() |
void |
close() |
protected Comparator<IncrementalIndexRow> |
dimsComparator() |
InputRow |
formatRow(InputRow row) |
AggregatorType[] |
getAggs() |
protected abstract AggregatorType[] |
getAggsForRow(int rowOffset) |
protected abstract Object |
getAggVal(AggregatorType agg,
int rowOffset,
int aggPosition) |
AtomicLong |
getBytesInMemory() |
ColumnCapabilities |
getCapabilities(String column) |
Map<String,ColumnCapabilitiesImpl> |
getColumnCapabilities() |
List<String> |
getColumnNames() |
static ParseException |
getCombinedParseException(InputRow row,
List<String> dimParseExceptionMessages,
List<String> aggParseExceptionMessages) |
IncrementalIndex.DimensionDesc |
getDimension(String dimension) |
Integer |
getDimensionIndex(String dimension) |
List<String> |
getDimensionNames() |
List<String> |
getDimensionOrder() |
List<IncrementalIndex.DimensionDesc> |
getDimensions() |
abstract org.apache.druid.segment.incremental.IncrementalIndex.FactsHolder |
getFacts() |
org.joda.time.Interval |
getInterval() |
abstract int |
getLastRowIndex() |
org.joda.time.DateTime |
getMaxIngestedEventTime() |
org.joda.time.DateTime |
getMaxTime() |
Metadata |
getMetadata() |
AggregatorFactory[] |
getMetricAggs() |
protected abstract double |
getMetricDoubleValue(int rowOffset,
int aggOffset) |
protected abstract float |
getMetricFloatValue(int rowOffset,
int aggOffset) |
protected abstract long |
getMetricLongValue(int rowOffset,
int aggOffset) |
List<String> |
getMetricNames() |
protected abstract Object |
getMetricObjectValue(int rowOffset,
int aggOffset) |
String |
getMetricType(String metric) |
org.joda.time.DateTime |
getMinTime() |
abstract String |
getOutOfRowsReason() |
protected abstract AggregatorType[] |
initAggs(AggregatorFactory[] metrics,
com.google.common.base.Supplier<InputRow> rowSupplier,
boolean deserializeComplexMetrics,
boolean concurrentEventAdd) |
boolean |
isEmpty() |
protected abstract boolean |
isNull(int rowOffset,
int aggOffset) |
boolean |
isRollup() |
Iterable<Row> |
iterableWithPostAggregations(List<PostAggregator> postAggs,
boolean descending) |
Iterator<Row> |
iterator() |
void |
loadDimensionIterable(Iterable<String> oldDimensionOrder,
Map<String,ColumnCapabilitiesImpl> oldColumnCapabilities)
Currently called to initialize IncrementalIndex dimension order during index creation
Index dimension ordering could be changed to initialize from DimensionsSpec after resolution of
https://github.com/apache/druid/issues/2011
|
protected ColumnSelectorFactory |
makeColumnSelectorFactory(AggregatorFactory agg,
com.google.common.base.Supplier<InputRow> in,
boolean deserializeComplexMetrics) |
static ColumnSelectorFactory |
makeColumnSelectorFactory(VirtualColumns virtualColumns,
AggregatorFactory agg,
com.google.common.base.Supplier<InputRow> in,
boolean deserializeComplexMetrics)
Column selector used at ingestion time for inputs to aggregators.
|
ColumnValueSelector<?> |
makeMetricColumnValueSelector(String metric,
IncrementalIndexRowHolder currEntry) |
int |
size() |
StorageAdapter |
toStorageAdapter() |
toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitforEach, spliteratorprotected IncrementalIndex(IncrementalIndexSchema incrementalIndexSchema, boolean deserializeComplexMetrics, boolean reportParseExceptions, boolean concurrentEventAdd)
Set concurrentEventAdd to true to indicate that adding of input row should be thread-safe (for example, groupBy where the multiple threads can add concurrently to the IncrementalIndex).
incrementalIndexSchema - the schema to use for incremental indexdeserializeComplexMetrics - flag whether or not to call ComplexMetricExtractor.extractValue() on the input
value for aggregators that return metrics other than float.reportParseExceptions - flag whether or not to report ParseExceptions that occur while extracting values
from input rowsconcurrentEventAdd - flag whether ot not adding of input rows should be thread-safepublic static ColumnSelectorFactory makeColumnSelectorFactory(VirtualColumns virtualColumns, AggregatorFactory agg, com.google.common.base.Supplier<InputRow> in, boolean deserializeComplexMetrics)
agg - the aggregatorin - ingestion-time input row supplierdeserializeComplexMetrics - whether complex objects should be deserialized by a ComplexMetricExtractorpublic boolean isRollup()
public abstract org.apache.druid.segment.incremental.IncrementalIndex.FactsHolder getFacts()
public abstract boolean canAppendRow()
public abstract String getOutOfRowsReason()
protected abstract AggregatorType[] initAggs(AggregatorFactory[] metrics, com.google.common.base.Supplier<InputRow> rowSupplier, boolean deserializeComplexMetrics, boolean concurrentEventAdd)
protected abstract org.apache.druid.segment.incremental.IncrementalIndex.AddToFactsResult addToFacts(InputRow row, IncrementalIndexRow key, ThreadLocal<InputRow> rowContainer, com.google.common.base.Supplier<InputRow> rowSupplier, boolean skipMaxRowsInMemoryCheck) throws IndexSizeExceededException
IndexSizeExceededExceptionpublic abstract int getLastRowIndex()
protected abstract AggregatorType[] getAggsForRow(int rowOffset)
protected abstract Object getAggVal(AggregatorType agg, int rowOffset, int aggPosition)
protected abstract float getMetricFloatValue(int rowOffset,
int aggOffset)
protected abstract long getMetricLongValue(int rowOffset,
int aggOffset)
protected abstract Object getMetricObjectValue(int rowOffset, int aggOffset)
protected abstract double getMetricDoubleValue(int rowOffset,
int aggOffset)
protected abstract boolean isNull(int rowOffset,
int aggOffset)
public void close()
close in interface Closeableclose in interface AutoCloseablepublic Map<String,ColumnCapabilitiesImpl> getColumnCapabilities()
public IncrementalIndexAddResult add(InputRow row) throws IndexSizeExceededException
Calls to add() are thread safe.
row - the row of data to addIndexSizeExceededExceptionpublic IncrementalIndexAddResult add(InputRow row, boolean skipMaxRowsInMemoryCheck) throws IndexSizeExceededException
IndexSizeExceededException@Nullable public static ParseException getCombinedParseException(InputRow row, @Nullable List<String> dimParseExceptionMessages, @Nullable List<String> aggParseExceptionMessages)
public boolean isEmpty()
public int size()
public AtomicLong getBytesInMemory()
public AggregatorType[] getAggs()
public AggregatorFactory[] getMetricAggs()
public List<IncrementalIndex.DimensionDesc> getDimensions()
@Nullable public IncrementalIndex.DimensionDesc getDimension(String dimension)
public ColumnValueSelector<?> makeMetricColumnValueSelector(String metric, IncrementalIndexRowHolder currEntry)
public org.joda.time.Interval getInterval()
@Nullable public org.joda.time.DateTime getMinTime()
@Nullable public org.joda.time.DateTime getMaxTime()
public void loadDimensionIterable(Iterable<String> oldDimensionOrder, Map<String,ColumnCapabilitiesImpl> oldColumnCapabilities)
public List<String> getColumnNames()
getColumnNames in class AbstractIndexpublic StorageAdapter toStorageAdapter()
toStorageAdapter in class AbstractIndex@Nullable public ColumnCapabilities getCapabilities(String column)
public Metadata getMetadata()
public Iterable<Row> iterableWithPostAggregations(@Nullable List<PostAggregator> postAggs, boolean descending)
public org.joda.time.DateTime getMaxIngestedEventTime()
protected ColumnSelectorFactory makeColumnSelectorFactory(AggregatorFactory agg, com.google.common.base.Supplier<InputRow> in, boolean deserializeComplexMetrics)
protected final Comparator<IncrementalIndexRow> dimsComparator()
Copyright © 2011–2020 The Apache Software Foundation. All rights reserved.