/** * In general, the resource management is tied to the runner. */ @ExtensionPoint public interface ProvisioningStrategy<T extends TaskRunner> { /** * Creates a new {@link ProvisioningService} for the given {@link TaskRunner} * This method is intended to be called from the TaskRunner's lifecycle start * * @param runner The TaskRunner state holder this strategy should use during execution */ ProvisioningService makeProvisioningService(T runner); }
@ExtensionPoint public interface GenericColumnSerializer extends Serializer { void open() throws IOException; void serialize(Object obj) throws IOException; }
/** */ @ExtensionPoint public interface ComplexMetricExtractor { Class<?> extractedClass(); Object extractValue(InputRow inputRow, String metricName); }
@ExtensionPoint public interface QueryRunner<T> { /** * Runs the given query and returns results in a time-ordered sequence. */ Sequence<T> run(QueryPlus<T> queryPlus, Map<String, Object> responseContext); }
/** * Functionally similar to an Aggregator. See the Aggregator interface for more comments. */ @ExtensionPoint public interface PostAggregator extends Cacheable { Set<String> getDependentFields(); Comparator getComparator(); Object compute(Map<String, Object> combinedAggregators); String getName(); /** * Returns a richer post aggregator which are built from the given aggregators with their names and some accessible * environmental variables such as ones in the object scope. * * @param aggregators A map of aggregator factories with their names. * */ PostAggregator decorate(Map<String, AggregatorFactory> aggregators); }
/** * Specialization of {@link QueryMetrics} for {@link TimeseriesQuery}. */ @ExtensionPoint public interface TimeseriesQueryMetrics extends QueryMetrics<TimeseriesQuery> { /** * Sets the number of metrics of the given timeseries query as dimension. */ @PublicApi void numMetrics(TimeseriesQuery query); /** * Sets the number of "complex" metrics of the given timeseries query as dimension. By default it is assumed that * "complex" metric is a metric of not long or double type, but it could be redefined in the implementation of this * method. */ @PublicApi void numComplexMetrics(TimeseriesQuery query); /** * Sets the granularity of {@link TimeseriesQuery#getGranularity()} of the given query as dimension. */ @PublicApi void granularity(TimeseriesQuery query); }
@ExtensionPoint public interface GroupByQueryMetrics extends QueryMetrics<GroupByQuery>
@ExtensionPoint public interface Aggregator extends Closeable
@ExtensionPoint public interface ObjectStrategy<T> extends Comparator<T>
@ExtensionPoint public interface QueryRunnerFactory<T, QueryType extends Query<T>>
@ExtensionPoint public interface ServletFilterHolder
@ExtensionPoint public interface CacheStrategy<T, CacheType, QueryType extends Query<T>>
@ExtensionPoint public interface TopNQueryMetrics extends QueryMetrics<TopNQuery>
/** * Outside of {@link io.druid.indexing.overlord.autoscaling.PendingTaskBasedWorkerProvisioningStrategy} and * {@link io.druid.indexing.overlord.autoscaling.SimpleWorkerProvisioningStrategy}, WorkerBehaviorConfig is used only * in {@link io.druid.indexing.overlord.TaskRunner}, and only {@link #getSelectStrategy()} method is used. That is why * the WorkerBehaviorConfig's interface is minimized to just this method. PendingTaskBasedWorkerProvisioningStrategy and * SimpleWorkerProvisioningStrategy are written to work only with {@link DefaultWorkerBehaviorConfig}. Extension-defined * WorkerBehaviorConfig implementations should likely be used with different extension-defined {@link * io.druid.indexing.overlord.autoscaling.ProvisioningStrategy} implementations as well. */ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", defaultImpl = DefaultWorkerBehaviorConfig.class) @JsonSubTypes(value = { @JsonSubTypes.Type(name = "default", value = DefaultWorkerBehaviorConfig.class) }) @ExtensionPoint public interface WorkerBehaviorConfig { String CONFIG_KEY = "worker.config"; WorkerSelectStrategy DEFAULT_STRATEGY = new EqualDistributionWorkerSelectStrategy(null); WorkerSelectStrategy getSelectStrategy(); }
@ExtensionPoint public abstract class ComplexMetricSerde
@ExtensionPoint public abstract class QueryToolChest<ResultType, QueryType extends Query<ResultType>>
@ExtensionPoint public interface BufferAggregator extends HotLoopCallee
@ExtensionPoint public abstract class AggregatorFactory implements Cacheable
@JsonSubTypes.Type(name = "ec2", value = EC2AutoScaler.class) }) @ExtensionPoint public interface AutoScaler<T>
@ExtensionPoint public abstract class BaseQuery<T extends Comparable<T>> implements Query<T>