You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by am...@apache.org on 2023/08/14 04:44:46 UTC
[druid-website] 01/01: Restore 26.0.0 docs
This is an automated email from the ASF dual-hosted git repository.
amatya pushed a commit to branch restore-26.0.0-docs
in repository https://gitbox.apache.org/repos/asf/druid-website.git
commit 391d43a04dcd752715fc8c34e664c04fe6427bda
Author: Amatya <am...@imply.io>
AuthorDate: Mon Aug 14 10:14:23 2023 +0530
Restore 26.0.0 docs
---
.../druid-vs-elasticsearch.html/index.html | 11 ++
.../comparisons/druid-vs-elasticsearch/index.html | 32 +++++
.../comparisons/druid-vs-key-value.html/index.html | 11 ++
.../comparisons/druid-vs-key-value/index.html | 36 +++++
.../comparisons/druid-vs-kudu.html/index.html | 11 ++
docs/26.0.0/comparisons/druid-vs-kudu/index.html | 36 +++++
.../comparisons/druid-vs-redshift.html/index.html | 11 ++
.../comparisons/druid-vs-redshift/index.html | 25 ++++
.../comparisons/druid-vs-spark.html/index.html | 11 ++
docs/26.0.0/comparisons/druid-vs-spark/index.html | 33 +++++
.../druid-vs-sql-on-hadoop.html/index.html | 11 ++
.../comparisons/druid-vs-sql-on-hadoop/index.html | 43 ++++++
docs/26.0.0/configuration.html/index.html | 11 ++
docs/26.0.0/configuration/auth.html/index.html | 11 ++
docs/26.0.0/configuration/broker.html/index.html | 11 ++
docs/26.0.0/configuration/caching.html/index.html | 11 ++
.../configuration/coordinator.html/index.html | 11 ++
docs/26.0.0/configuration/hadoop.html/index.html | 11 ++
.../configuration/historical.html/index.html | 11 ++
.../human-readable-byte.html/index.html | 11 ++
.../configuration/human-readable-byte/index.html | 26 ++++
docs/26.0.0/configuration/index.html | 129 +++++++++++++++++
.../configuration/indexing-service.html/index.html | 11 ++
docs/26.0.0/configuration/logging.html/index.html | 11 ++
docs/26.0.0/configuration/logging/index.html | 43 ++++++
.../production-cluster.html/index.html | 11 ++
docs/26.0.0/configuration/realtime.html/index.html | 11 ++
.../configuration/simple-cluster.html/index.html | 11 ++
.../26.0.0/configuration/zookeeper.html/index.html | 11 ++
docs/26.0.0/data-management.html/index.html | 11 ++
.../automatic-compaction.html/index.html | 11 ++
.../automatic-compaction/index.html | 44 ++++++
.../data-management/compaction.html/index.html | 11 ++
docs/26.0.0/data-management/compaction/index.html | 30 ++++
docs/26.0.0/data-management/delete.html/index.html | 11 ++
docs/26.0.0/data-management/delete/index.html | 50 +++++++
docs/26.0.0/data-management/index.html | 28 ++++
.../data-management/schema-changes.html/index.html | 11 ++
.../data-management/schema-changes/index.html | 32 +++++
docs/26.0.0/data-management/update.html/index.html | 11 ++
docs/26.0.0/data-management/update/index.html | 45 ++++++
.../cassandra-deep-storage.html/index.html | 11 ++
.../dependencies/deep-storage.html/index.html | 11 ++
docs/26.0.0/dependencies/deep-storage/index.html | 29 ++++
.../dependencies/metadata-storage.html/index.html | 11 ++
.../dependencies/metadata-storage/index.html | 46 ++++++
docs/26.0.0/dependencies/zookeeper.html/index.html | 11 ++
docs/26.0.0/dependencies/zookeeper/index.html | 25 ++++
docs/26.0.0/design.html/index.html | 11 ++
docs/26.0.0/design/architecture.html/index.html | 11 ++
docs/26.0.0/design/architecture/index.html | 133 ++++++++++++++++++
docs/26.0.0/design/auth.html/index.html | 11 ++
docs/26.0.0/design/auth/index.html | 26 ++++
docs/26.0.0/design/broker.html/index.html | 11 ++
docs/26.0.0/design/broker/index.html | 27 ++++
.../concepts-and-terminology.html/index.html | 11 ++
docs/26.0.0/design/coordinator.html/index.html | 11 ++
docs/26.0.0/design/coordinator/index.html | 61 ++++++++
docs/26.0.0/design/design.html/index.html | 11 ++
.../extensions-contrib/dropwizard.html/index.html | 11 ++
.../extensions-contrib/dropwizard/index.html | 32 +++++
docs/26.0.0/design/historical.html/index.html | 11 ++
docs/26.0.0/design/historical/index.html | 25 ++++
docs/26.0.0/design/index.html | 43 ++++++
docs/26.0.0/design/indexer.html/index.html | 11 ++
docs/26.0.0/design/indexer/index.html | 26 ++++
.../26.0.0/design/indexing-service.html/index.html | 11 ++
docs/26.0.0/design/indexing-service/index.html | 26 ++++
docs/26.0.0/design/middlemanager.html/index.html | 11 ++
docs/26.0.0/design/middlemanager/index.html | 26 ++++
docs/26.0.0/design/overlord.html/index.html | 11 ++
docs/26.0.0/design/overlord/index.html | 28 ++++
docs/26.0.0/design/peons.html/index.html | 11 ++
docs/26.0.0/design/peons/index.html | 27 ++++
docs/26.0.0/design/plumber.html/index.html | 11 ++
docs/26.0.0/design/processes.html/index.html | 11 ++
docs/26.0.0/design/processes/index.html | 38 +++++
docs/26.0.0/design/realtime.html/index.html | 11 ++
docs/26.0.0/design/router.html/index.html | 11 ++
docs/26.0.0/design/router/index.html | 43 ++++++
docs/26.0.0/design/segments.html/index.html | 11 ++
docs/26.0.0/design/segments/index.html | 41 ++++++
.../approximate-histograms.html/index.html | 11 ++
docs/26.0.0/development/build.html/index.html | 11 ++
docs/26.0.0/development/build/index.html | 31 +++++
.../community-extensions/azure.html/index.html | 11 ++
.../community-extensions/cassandra.html/index.html | 11 ++
.../cloudfiles.html/index.html | 11 ++
.../community-extensions/graphite.html/index.html | 11 ++
.../kafka-simple.html/index.html | 11 ++
.../community-extensions/rabbitmq.html/index.html | 11 ++
.../experimental-features.html/index.html | 11 ++
.../development/experimental-features/index.html | 25 ++++
.../development/experimental.html/index.html | 11 ++
docs/26.0.0/development/experimental/index.html | 28 ++++
.../extensions-contrib/aliyun-oss.html/index.html | 11 ++
.../extensions-contrib/aliyun-oss/index.html | 29 ++++
.../ambari-metrics-emitter.html/index.html | 11 ++
.../ambari-metrics-emitter/index.html | 34 +++++
.../extensions-contrib/cassandra.html/index.html | 11 ++
.../extensions-contrib/cassandra/index.html | 27 ++++
.../extensions-contrib/cloudfiles.html/index.html | 11 ++
.../extensions-contrib/cloudfiles/index.html | 27 ++++
.../compressed-big-decimal.html/index.html | 11 ++
.../compressed-big-decimal/index.html | 25 ++++
.../distinctcount.html/index.html | 11 ++
.../extensions-contrib/distinctcount/index.html | 25 ++++
.../gce-extensions.html/index.html | 11 ++
.../extensions-contrib/gce-extensions/index.html | 37 +++++
.../extensions-contrib/google.html/index.html | 11 ++
.../extensions-contrib/graphite.html/index.html | 11 ++
.../extensions-contrib/graphite/index.html | 40 ++++++
.../extensions-contrib/influx.html/index.html | 11 ++
.../extensions-contrib/influx/index.html | 25 ++++
.../influxdb-emitter.html/index.html | 11 ++
.../extensions-contrib/influxdb-emitter/index.html | 29 ++++
.../extensions-contrib/k8s-jobs.html/index.html | 11 ++
.../extensions-contrib/k8s-jobs/index.html | 35 +++++
.../kafka-emitter.html/index.html | 11 ++
.../extensions-contrib/kafka-emitter/index.html | 28 ++++
.../kafka-simple.html/index.html | 11 ++
.../materialized-view.html/index.html | 11 ++
.../materialized-view/index.html | 26 ++++
.../momentsketch-quantiles.html/index.html | 11 ++
.../momentsketch-quantiles/index.html | 26 ++++
.../moving-average-query.html/index.html | 11 ++
.../moving-average-query/index.html | 30 ++++
.../opentsdb-emitter.html/index.html | 11 ++
.../extensions-contrib/opentsdb-emitter/index.html | 28 ++++
.../extensions-contrib/orc.html/index.html | 11 ++
.../extensions-contrib/parquet.html/index.html | 11 ++
.../extensions-contrib/prometheus.html/index.html | 11 ++
.../extensions-contrib/prometheus/index.html | 31 +++++
.../extensions-contrib/rabbitmq.html/index.html | 11 ++
.../extensions-contrib/redis-cache.html/index.html | 11 ++
.../extensions-contrib/redis-cache/index.html | 25 ++++
.../extensions-contrib/rocketmq.html/index.html | 11 ++
.../extensions-contrib/scan-query.html/index.html | 11 ++
.../extensions-contrib/sqlserver.html/index.html | 11 ++
.../extensions-contrib/sqlserver/index.html | 26 ++++
.../extensions-contrib/statsd.html/index.html | 11 ++
.../extensions-contrib/statsd/index.html | 40 ++++++
.../tdigestsketch-quantiles.html/index.html | 11 ++
.../tdigestsketch-quantiles/index.html | 34 +++++
.../extensions-contrib/thrift.html/index.html | 11 ++
.../extensions-contrib/thrift/index.html | 25 ++++
.../time-min-max.html/index.html | 11 ++
.../extensions-contrib/time-min-max/index.html | 27 ++++
.../approximate-histograms.html/index.html | 11 ++
.../approximate-histograms/index.html | 51 +++++++
.../extensions-core/avro.html/index.html | 11 ++
.../development/extensions-core/avro/index.html | 25 ++++
.../extensions-core/azure.html/index.html | 11 ++
.../development/extensions-core/azure/index.html | 25 ++++
.../extensions-core/bloom-filter.html/index.html | 11 ++
.../extensions-core/bloom-filter/index.html | 40 ++++++
.../extensions-core/caffeine-cache.html/index.html | 11 ++
.../datasketches-extension.html/index.html | 11 ++
.../datasketches-extension/index.html | 25 ++++
.../datasketches-hll.html/index.html | 11 ++
.../extensions-core/datasketches-hll/index.html | 31 +++++
.../datasketches-kll.html/index.html | 11 ++
.../extensions-core/datasketches-kll/index.html | 25 ++++
.../datasketches-quantiles.html/index.html | 11 ++
.../datasketches-quantiles/index.html | 25 ++++
.../datasketches-theta.html/index.html | 11 ++
.../extensions-core/datasketches-theta/index.html | 27 ++++
.../datasketches-tuple.html/index.html | 11 ++
.../extensions-core/datasketches-tuple/index.html | 25 ++++
.../extensions-core/druid-aws-rds.html/index.html | 11 ++
.../extensions-core/druid-aws-rds/index.html | 26 ++++
.../druid-basic-security.html/index.html | 11 ++
.../druid-basic-security/index.html | 155 +++++++++++++++++++++
.../extensions-core/druid-kerberos.html/index.html | 11 ++
.../extensions-core/druid-kerberos/index.html | 33 +++++
.../extensions-core/druid-lookups.html/index.html | 11 ++
.../extensions-core/druid-lookups/index.html | 40 ++++++
.../extensions-core/druid-pac4j.html/index.html | 11 ++
.../extensions-core/druid-pac4j/index.html | 27 ++++
.../druid-ranger-security.html/index.html | 11 ++
.../druid-ranger-security/index.html | 25 ++++
.../extensions-core/examples.html/index.html | 11 ++
.../extensions-core/examples/index.html | 25 ++++
.../extensions-core/google.html/index.html | 11 ++
.../development/extensions-core/google/index.html | 27 ++++
.../extensions-core/hdfs.html/index.html | 11 ++
.../development/extensions-core/hdfs/index.html | 47 +++++++
.../kafka-eight-firehose.html/index.html | 11 ++
.../kafka-extraction-namespace.html/index.html | 11 ++
.../kafka-extraction-namespace/index.html | 25 ++++
.../kafka-ingestion.html/index.html | 11 ++
.../extensions-core/kafka-ingestion/index.html | 27 ++++
.../kafka-supervisor-operations.html/index.html | 11 ++
.../kafka-supervisor-operations/index.html | 105 ++++++++++++++
.../kafka-supervisor-reference.html/index.html | 11 ++
.../kafka-supervisor-reference/index.html | 27 ++++
.../kinesis-ingestion.html/index.html | 11 ++
.../extensions-core/kinesis-ingestion/index.html | 133 ++++++++++++++++++
.../extensions-core/kubernetes.html/index.html | 11 ++
.../extensions-core/kubernetes/index.html | 29 ++++
.../lookups-cached-global.html/index.html | 11 ++
.../lookups-cached-global/index.html | 43 ++++++
.../extensions-core/mysql.html/index.html | 11 ++
.../development/extensions-core/mysql/index.html | 30 ++++
.../namespaced-lookup.html/index.html | 11 ++
.../extensions-core/orc.html/index.html | 11 ++
.../development/extensions-core/orc/index.html | 37 +++++
.../extensions-core/parquet.html/index.html | 11 ++
.../development/extensions-core/parquet/index.html | 31 +++++
.../extensions-core/postgresql.html/index.html | 11 ++
.../extensions-core/postgresql/index.html | 29 ++++
.../extensions-core/protobuf.html/index.html | 11 ++
.../extensions-core/protobuf/index.html | 27 ++++
.../development/extensions-core/s3.html/index.html | 11 ++
.../development/extensions-core/s3/index.html | 27 ++++
.../simple-client-sslcontext.html/index.html | 11 ++
.../simple-client-sslcontext/index.html | 28 ++++
.../extensions-core/stats.html/index.html | 11 ++
.../development/extensions-core/stats/index.html | 35 +++++
.../extensions-core/test-stats.html/index.html | 11 ++
.../extensions-core/test-stats/index.html | 26 ++++
docs/26.0.0/development/extensions.html/index.html | 11 ++
docs/26.0.0/development/extensions/index.html | 45 ++++++
docs/26.0.0/development/geo.html/index.html | 11 ++
docs/26.0.0/development/geo/index.html | 32 +++++
docs/26.0.0/development/indexer.html/index.html | 11 ++
.../index.html | 11 ++
docs/26.0.0/development/javascript.html/index.html | 11 ++
docs/26.0.0/development/javascript/index.html | 37 +++++
.../kafka-simple-consumer-firehose.html/index.html | 11 ++
docs/26.0.0/development/modules.html/index.html | 11 ++
docs/26.0.0/development/modules/index.html | 51 +++++++
docs/26.0.0/development/overview.html/index.html | 11 ++
docs/26.0.0/development/overview/index.html | 34 +++++
docs/26.0.0/development/router.html/index.html | 11 ++
.../development/select-query.html/index.html | 11 ++
docs/26.0.0/development/versioning.html/index.html | 11 ++
docs/26.0.0/development/versioning/index.html | 25 ++++
docs/26.0.0/index.html | 11 ++
docs/26.0.0/ingestion.html/index.html | 11 ++
.../ingestion/automatic-compaction.html/index.html | 11 ++
.../ingestion/batch-ingestion.html/index.html | 11 ++
.../command-line-hadoop-indexer.html/index.html | 11 ++
docs/26.0.0/ingestion/compaction.html/index.html | 11 ++
docs/26.0.0/ingestion/data-formats.html/index.html | 11 ++
docs/26.0.0/ingestion/data-formats/index.html | 108 ++++++++++++++
.../ingestion/data-management.html/index.html | 11 ++
docs/26.0.0/ingestion/data-model.html/index.html | 11 ++
docs/26.0.0/ingestion/data-model/index.html | 30 ++++
docs/26.0.0/ingestion/delete-data.html/index.html | 11 ++
docs/26.0.0/ingestion/faq.html/index.html | 11 ++
docs/26.0.0/ingestion/faq/index.html | 31 +++++
docs/26.0.0/ingestion/firehose.html/index.html | 11 ++
docs/26.0.0/ingestion/flatten-json.html/index.html | 11 ++
.../hadoop-vs-native-batch.html/index.html | 11 ++
docs/26.0.0/ingestion/hadoop.html/index.html | 11 ++
docs/26.0.0/ingestion/hadoop/index.html | 72 ++++++++++
docs/26.0.0/ingestion/index.html | 34 +++++
.../ingestion/ingestion-spec.html/index.html | 11 ++
docs/26.0.0/ingestion/ingestion-spec/index.html | 80 +++++++++++
docs/26.0.0/ingestion/ingestion.html/index.html | 11 ++
.../ingestion/locking-and-priority.html/index.html | 11 ++
.../migrate-from-firehose.html/index.html | 11 ++
.../ingestion/migrate-from-firehose/index.html | 26 ++++
docs/26.0.0/ingestion/misc-tasks.html/index.html | 11 ++
.../native-batch-firehose.html/index.html | 11 ++
.../ingestion/native-batch-firehose/index.html | 58 ++++++++
.../native-batch-input-sources.html/index.html | 11 ++
.../native-batch-input-sources/index.html | 69 +++++++++
.../native-batch-simple-task.html/index.html | 11 ++
.../ingestion/native-batch-simple-task/index.html | 34 +++++
docs/26.0.0/ingestion/native-batch.html/index.html | 11 ++
docs/26.0.0/ingestion/native-batch/index.html | 99 +++++++++++++
docs/26.0.0/ingestion/native_tasks.html/index.html | 11 ++
docs/26.0.0/ingestion/overview.html/index.html | 11 ++
docs/26.0.0/ingestion/partitioning.html/index.html | 11 ++
docs/26.0.0/ingestion/partitioning/index.html | 29 ++++
.../ingestion/realtime-ingestion.html/index.html | 11 ++
docs/26.0.0/ingestion/reports.html/index.html | 11 ++
docs/26.0.0/ingestion/rollup.html/index.html | 11 ++
docs/26.0.0/ingestion/rollup/index.html | 27 ++++
.../ingestion/schema-changes.html/index.html | 11 ++
.../26.0.0/ingestion/schema-design.html/index.html | 11 ++
docs/26.0.0/ingestion/schema-design/index.html | 106 ++++++++++++++
.../ingestion/standalone-realtime.html/index.html | 11 ++
.../ingestion/standalone-realtime/index.html | 32 +++++
.../ingestion/stream-ingestion.html/index.html | 11 ++
docs/26.0.0/ingestion/stream-pull.html/index.html | 11 ++
docs/26.0.0/ingestion/stream-push.html/index.html | 11 ++
docs/26.0.0/ingestion/tasks.html/index.html | 11 ++
docs/26.0.0/ingestion/tasks/index.html | 76 ++++++++++
docs/26.0.0/ingestion/tranquility.html/index.html | 11 ++
docs/26.0.0/ingestion/tranquility/index.html | 30 ++++
.../ingestion/transform-spec.html/index.html | 11 ++
.../ingestion/update-existing-data.html/index.html | 11 ++
docs/26.0.0/misc/cluster-setup.html/index.html | 11 ++
docs/26.0.0/misc/evaluate.html/index.html | 11 ++
docs/26.0.0/misc/math-expr.html/index.html | 11 ++
docs/26.0.0/misc/math-expr/index.html | 32 +++++
docs/26.0.0/misc/papers-and-talks.html/index.html | 11 ++
docs/26.0.0/misc/papers-and-talks/index.html | 25 ++++
docs/26.0.0/misc/tasks.html/index.html | 11 ++
docs/26.0.0/multi-stage-query.html/index.html | 11 ++
docs/26.0.0/multi-stage-query/api.html/index.html | 11 ++
docs/26.0.0/multi-stage-query/api/index.html | 36 +++++
.../multi-stage-query/concepts.html/index.html | 11 ++
docs/26.0.0/multi-stage-query/concepts/index.html | 121 ++++++++++++++++
.../multi-stage-query/examples.html/index.html | 11 ++
docs/26.0.0/multi-stage-query/examples/index.html | 27 ++++
docs/26.0.0/multi-stage-query/index.html | 43 ++++++
.../multi-stage-query/known-issues.html/index.html | 11 ++
.../multi-stage-query/known-issues/index.html | 40 ++++++
.../multi-stage-query/reference.html/index.html | 11 ++
docs/26.0.0/multi-stage-query/reference/index.html | 80 +++++++++++
.../multi-stage-query/security.html/index.html | 11 ++
docs/26.0.0/multi-stage-query/security/index.html | 37 +++++
docs/26.0.0/operations/alerts.html/index.html | 11 ++
docs/26.0.0/operations/alerts/index.html | 25 ++++
.../operations/api-reference.html/index.html | 11 ++
docs/26.0.0/operations/api-reference/index.html | 112 +++++++++++++++
docs/26.0.0/operations/auth-ldap.html/index.html | 11 ++
docs/26.0.0/operations/auth-ldap/index.html | 26 ++++
.../basic-cluster-tuning.html/index.html | 11 ++
.../operations/basic-cluster-tuning/index.html | 27 ++++
.../clean-metadata-store.html/index.html | 11 ++
.../operations/clean-metadata-store/index.html | 38 +++++
.../deep-storage-migration.html/index.html | 11 ++
.../operations/deep-storage-migration/index.html | 28 ++++
.../operations/druid-console.html/index.html | 11 ++
.../26.0.0/operations/dump-segment.html/index.html | 11 ++
docs/26.0.0/operations/dump-segment/index.html | 40 ++++++
.../dynamic-config-provider.html/index.html | 11 ++
.../operations/dynamic-config-provider/index.html | 25 ++++
.../operations/export-metadata.html/index.html | 11 ++
docs/26.0.0/operations/export-metadata/index.html | 26 ++++
.../operations/getting-started.html/index.html | 11 ++
docs/26.0.0/operations/getting-started/index.html | 25 ++++
.../operations/high-availability.html/index.html | 11 ++
.../26.0.0/operations/high-availability/index.html | 32 +++++
.../operations/http-compression.html/index.html | 11 ++
docs/26.0.0/operations/http-compression/index.html | 25 ++++
.../including-extensions.html/index.html | 11 ++
.../insert-segment-to-db.html/index.html | 11 ++
.../operations/insert-segment-to-db/index.html | 37 +++++
docs/26.0.0/operations/java.html/index.html | 11 ++
docs/26.0.0/operations/java/index.html | 49 +++++++
docs/26.0.0/operations/kubernetes.html/index.html | 11 ++
docs/26.0.0/operations/kubernetes/index.html | 25 ++++
.../operations/management-uis.html/index.html | 11 ++
.../operations/metadata-migration.html/index.html | 11 ++
.../operations/metadata-migration/index.html | 29 ++++
docs/26.0.0/operations/metrics.html/index.html | 11 ++
docs/26.0.0/operations/metrics/index.html | 30 ++++
.../operations/mixed-workloads.html/index.html | 11 ++
docs/26.0.0/operations/mixed-workloads/index.html | 50 +++++++
.../26.0.0/operations/multitenancy.html/index.html | 11 ++
.../26.0.0/operations/other-hadoop.html/index.html | 11 ++
docs/26.0.0/operations/other-hadoop/index.html | 52 +++++++
.../operations/password-provider.html/index.html | 11 ++
.../26.0.0/operations/password-provider/index.html | 25 ++++
.../operations/performance-faq.html/index.html | 11 ++
docs/26.0.0/operations/pull-deps.html/index.html | 11 ++
docs/26.0.0/operations/pull-deps/index.html | 25 ++++
.../operations/recommendations.html/index.html | 11 ++
.../operations/request-logging.html/index.html | 11 ++
docs/26.0.0/operations/request-logging/index.html | 35 +++++
.../operations/reset-cluster.html/index.html | 11 ++
docs/26.0.0/operations/reset-cluster/index.html | 29 ++++
.../operations/rolling-updates.html/index.html | 11 ++
docs/26.0.0/operations/rolling-updates/index.html | 47 +++++++
.../operations/rule-configuration.html/index.html | 11 ++
.../operations/rule-configuration/index.html | 25 ++++
.../operations/security-overview.html/index.html | 11 ++
.../26.0.0/operations/security-overview/index.html | 29 ++++
.../operations/security-user-auth.html/index.html | 11 ++
.../operations/security-user-auth/index.html | 32 +++++
.../segment-optimization.html/index.html | 11 ++
.../operations/segment-optimization/index.html | 56 ++++++++
.../operations/single-server.html/index.html | 11 ++
docs/26.0.0/operations/single-server/index.html | 28 ++++
docs/26.0.0/operations/tls-support.html/index.html | 11 ++
docs/26.0.0/operations/tls-support/index.html | 40 ++++++
.../use_sbt_to_build_fat_jar.html/index.html | 11 ++
.../operations/use_sbt_to_build_fat_jar/index.html | 25 ++++
docs/26.0.0/operations/web-console.html/index.html | 11 ++
docs/26.0.0/operations/web-console/index.html | 51 +++++++
docs/26.0.0/querying.html/index.html | 11 ++
docs/26.0.0/querying/aggregations.html/index.html | 11 ++
docs/26.0.0/querying/aggregations/index.html | 41 ++++++
docs/26.0.0/querying/caching.html/index.html | 11 ++
docs/26.0.0/querying/caching/index.html | 25 ++++
docs/26.0.0/querying/datasource.html/index.html | 11 ++
docs/26.0.0/querying/datasource/index.html | 88 ++++++++++++
.../datasourcemetadataquery.html/index.html | 11 ++
.../querying/datasourcemetadataquery/index.html | 27 ++++
.../26.0.0/querying/dimensionspecs.html/index.html | 11 ++
docs/26.0.0/querying/dimensionspecs/index.html | 77 ++++++++++
docs/26.0.0/querying/filters.html/index.html | 11 ++
docs/26.0.0/querying/filters/index.html | 51 +++++++
docs/26.0.0/querying/granularities.html/index.html | 11 ++
docs/26.0.0/querying/granularities/index.html | 35 +++++
docs/26.0.0/querying/groupbyquery.html/index.html | 11 ++
docs/26.0.0/querying/groupbyquery/index.html | 108 ++++++++++++++
docs/26.0.0/querying/having.html/index.html | 11 ++
docs/26.0.0/querying/having/index.html | 34 +++++
docs/26.0.0/querying/hll-old.html/index.html | 11 ++
docs/26.0.0/querying/hll-old/index.html | 34 +++++
docs/26.0.0/querying/index.html | 39 ++++++
docs/26.0.0/querying/joins.html/index.html | 11 ++
docs/26.0.0/querying/joins/index.html | 34 +++++
docs/26.0.0/querying/limitspec.html/index.html | 11 ++
docs/26.0.0/querying/limitspec/index.html | 33 +++++
docs/26.0.0/querying/lookups.html/index.html | 11 ++
docs/26.0.0/querying/lookups/index.html | 60 ++++++++
.../multi-value-dimensions.html/index.html | 11 ++
.../querying/multi-value-dimensions/index.html | 46 ++++++
docs/26.0.0/querying/multitenancy.html/index.html | 11 ++
docs/26.0.0/querying/multitenancy/index.html | 48 +++++++
.../26.0.0/querying/nested-columns.html/index.html | 11 ++
docs/26.0.0/querying/nested-columns/index.html | 25 ++++
docs/26.0.0/querying/optimizations.html/index.html | 11 ++
.../querying/post-aggregations.html/index.html | 11 ++
docs/26.0.0/querying/post-aggregations/index.html | 38 +++++
docs/26.0.0/querying/query-context.html/index.html | 11 ++
docs/26.0.0/querying/query-context/index.html | 35 +++++
.../querying/query-execution.html/index.html | 11 ++
docs/26.0.0/querying/query-execution/index.html | 60 ++++++++
docs/26.0.0/querying/scan-query.html/index.html | 11 ++
docs/26.0.0/querying/scan-query/index.html | 55 ++++++++
docs/26.0.0/querying/searchquery.html/index.html | 11 ++
docs/26.0.0/querying/searchquery/index.html | 39 ++++++
.../querying/searchqueryspec.html/index.html | 11 ++
.../querying/segmentmetadataquery.html/index.html | 11 ++
.../querying/segmentmetadataquery/index.html | 44 ++++++
docs/26.0.0/querying/select-query.html/index.html | 11 ++
docs/26.0.0/querying/select-query/index.html | 25 ++++
.../26.0.0/querying/sorting-orders.html/index.html | 11 ++
docs/26.0.0/querying/sorting-orders/index.html | 28 ++++
.../querying/sql-aggregations.html/index.html | 11 ++
docs/26.0.0/querying/sql-aggregations/index.html | 34 +++++
docs/26.0.0/querying/sql-api.html/index.html | 11 ++
docs/26.0.0/querying/sql-api/index.html | 48 +++++++
.../querying/sql-array-functions.html/index.html | 11 ++
.../26.0.0/querying/sql-array-functions/index.html | 27 ++++
.../26.0.0/querying/sql-data-types.html/index.html | 11 ++
docs/26.0.0/querying/sql-data-types/index.html | 81 +++++++++++
docs/26.0.0/querying/sql-functions.html/index.html | 11 ++
docs/26.0.0/querying/sql-functions/index.html | 27 ++++
docs/26.0.0/querying/sql-jdbc.html/index.html | 11 ++
docs/26.0.0/querying/sql-jdbc/index.html | 32 +++++
.../querying/sql-json-functions.html/index.html | 11 ++
docs/26.0.0/querying/sql-json-functions/index.html | 25 ++++
.../querying/sql-metadata-tables.html/index.html | 11 ++
.../26.0.0/querying/sql-metadata-tables/index.html | 36 +++++
.../index.html | 11 ++
.../sql-multivalue-string-functions/index.html | 31 +++++
docs/26.0.0/querying/sql-operators.html/index.html | 11 ++
docs/26.0.0/querying/sql-operators/index.html | 29 ++++
.../querying/sql-query-context.html/index.html | 11 ++
docs/26.0.0/querying/sql-query-context/index.html | 28 ++++
docs/26.0.0/querying/sql-scalar.html/index.html | 11 ++
docs/26.0.0/querying/sql-scalar/index.html | 52 +++++++
.../querying/sql-translation.html/index.html | 11 ++
docs/26.0.0/querying/sql-translation/index.html | 87 ++++++++++++
docs/26.0.0/querying/sql.html/index.html | 11 ++
docs/26.0.0/querying/sql/index.html | 79 +++++++++++
.../querying/timeboundaryquery.html/index.html | 11 ++
docs/26.0.0/querying/timeboundaryquery/index.html | 27 ++++
.../querying/timeseriesquery.html/index.html | 11 ++
docs/26.0.0/querying/timeseriesquery/index.html | 33 +++++
.../26.0.0/querying/topnmetricspec.html/index.html | 11 ++
docs/26.0.0/querying/topnmetricspec/index.html | 27 ++++
docs/26.0.0/querying/topnquery.html/index.html | 11 ++
docs/26.0.0/querying/topnquery/index.html | 34 +++++
.../querying/troubleshooting.html/index.html | 11 ++
docs/26.0.0/querying/troubleshooting/index.html | 33 +++++
docs/26.0.0/querying/using-caching.html/index.html | 11 ++
docs/26.0.0/querying/using-caching/index.html | 25 ++++
.../querying/virtual-columns.html/index.html | 11 ++
docs/26.0.0/querying/virtual-columns/index.html | 36 +++++
docs/26.0.0/tutorials.html/index.html | 11 ++
.../booting-a-production-cluster.html/index.html | 11 ++
docs/26.0.0/tutorials/cluster.html/index.html | 11 ++
docs/26.0.0/tutorials/cluster/index.html | 55 ++++++++
docs/26.0.0/tutorials/docker.html/index.html | 11 ++
docs/26.0.0/tutorials/docker/index.html | 27 ++++
docs/26.0.0/tutorials/examples.html/index.html | 11 ++
docs/26.0.0/tutorials/firewall.html/index.html | 11 ++
docs/26.0.0/tutorials/index.html | 37 +++++
.../tutorials/ingestion-streams.html/index.html | 11 ++
docs/26.0.0/tutorials/ingestion.html/index.html | 11 ++
docs/26.0.0/tutorials/quickstart.html/index.html | 11 ++
.../tutorial-a-first-look-at-druid.html/index.html | 11 ++
.../tutorial-all-about-queries.html/index.html | 11 ++
.../tutorial-batch-hadoop.html/index.html | 11 ++
.../tutorials/tutorial-batch-hadoop/index.html | 28 ++++
.../tutorial-batch-native.html/index.html | 11 ++
.../tutorials/tutorial-batch-native/index.html | 42 ++++++
.../tutorials/tutorial-batch.html/index.html | 11 ++
docs/26.0.0/tutorials/tutorial-batch/index.html | 29 ++++
.../tutorials/tutorial-compaction.html/index.html | 11 ++
.../tutorials/tutorial-compaction/index.html | 33 +++++
.../tutorials/tutorial-delete-data.html/index.html | 11 ++
.../tutorials/tutorial-delete-data/index.html | 27 ++++
.../tutorial-ingestion-spec.html/index.html | 11 ++
.../tutorials/tutorial-ingestion-spec/index.html | 26 ++++
.../26.0.0/tutorials/tutorial-jdbc.html/index.html | 11 ++
docs/26.0.0/tutorials/tutorial-jdbc/index.html | 25 ++++
.../tutorial-jupyter-docker.html/index.html | 11 ++
.../tutorials/tutorial-jupyter-docker/index.html | 51 +++++++
.../tutorial-jupyter-index.html/index.html | 11 ++
.../tutorials/tutorial-jupyter-index/index.html | 39 ++++++
.../tutorials/tutorial-kafka.html/index.html | 11 ++
docs/26.0.0/tutorials/tutorial-kafka/index.html | 26 ++++
.../tutorial-kerberos-hadoop.html/index.html | 11 ++
.../tutorials/tutorial-kerberos-hadoop/index.html | 29 ++++
.../tutorial-loading-batch-data.html/index.html | 11 ++
.../index.html | 11 ++
.../tutorial-msq-convert-spec.html/index.html | 11 ++
.../tutorials/tutorial-msq-convert-spec/index.html | 28 ++++
.../tutorials/tutorial-msq-extern.html/index.html | 11 ++
.../tutorials/tutorial-msq-extern/index.html | 30 ++++
.../tutorials/tutorial-query.html/index.html | 11 ++
docs/26.0.0/tutorials/tutorial-query/index.html | 45 ++++++
.../tutorials/tutorial-retention.html/index.html | 11 ++
.../26.0.0/tutorials/tutorial-retention/index.html | 27 ++++
.../tutorials/tutorial-rollup.html/index.html | 11 ++
docs/26.0.0/tutorials/tutorial-rollup/index.html | 26 ++++
.../tutorial-sketches-theta.html/index.html | 11 ++
.../tutorials/tutorial-sketches-theta/index.html | 33 +++++
.../tutorial-sql-query-view.html/index.html | 11 ++
.../tutorials/tutorial-sql-query-view/index.html | 25 ++++
.../tutorial-the-druid-cluster.html/index.html | 11 ++
.../tutorials/tutorial-tranquility.html/index.html | 11 ++
.../tutorial-transform-spec.html/index.html | 11 ++
.../tutorials/tutorial-transform-spec/index.html | 26 ++++
.../tutorial-unnest-arrays.html/index.html | 11 ++
.../tutorials/tutorial-unnest-arrays/index.html | 26 ++++
.../tutorials/tutorial-update-data.html/index.html | 11 ++
.../tutorials/tutorial-update-data/index.html | 30 ++++
540 files changed, 12376 insertions(+)
diff --git a/docs/26.0.0/comparisons/druid-vs-elasticsearch.html/index.html b/docs/26.0.0/comparisons/druid-vs-elasticsearch.html/index.html
new file mode 100644
index 000000000..4019ab457
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-elasticsearch.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/comparisons/druid-vs-elasticsearch">
+ <link rel="canonical" href="/docs/26.0.0/comparisons/druid-vs-elasticsearch" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/comparisons/druid-vs-elasticsearch' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-elasticsearch/index.html b/docs/26.0.0/comparisons/druid-vs-elasticsearch/index.html
new file mode 100644
index 000000000..ec237cfc6
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-elasticsearch/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-elasticsearch">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Druid vs Elasticsearch | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+and provides access to raw event level data. Elasticsearch is increasingly adding more support for analytics and aggregations.
+<a href="https://groups.google.com/forum/#!msg/druid-development/nlpwTHNclj8/sOuWlKOzPpYJ" target="_blank" rel="noopener noreferrer">Some members of the community</a> have pointed out
+the resource requirements for data ingestion and aggregation in Elasticsearch is much higher than those of Druid.</p><p>Elasticsearch also does not support data summarization/roll-up at ingestion time, which can compact the data that needs to be
+stored up to 100x with real-world data sets. This leads to Elasticsearch having greater storage requirements.</p><p>Druid focuses on OLAP work flows. Druid is optimized for high performance (fast aggregation and ingestion) at low cost,
+and supports a wide range of analytic operations. Druid has some basic search support for structured event data, but does not support
+full text search. Druid also does not support completely unstructured data. Measures must be defined in a Druid schema such that
+summarization/roll-up can be done.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div>< [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-key-value.html/index.html b/docs/26.0.0/comparisons/druid-vs-key-value.html/index.html
new file mode 100644
index 000000000..c3f7d3b2b
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-key-value.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/comparisons/druid-vs-key-value">
+ <link rel="canonical" href="/docs/26.0.0/comparisons/druid-vs-key-value" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/comparisons/druid-vs-key-value' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-key-value/index.html b/docs/26.0.0/comparisons/druid-vs-key-value/index.html
new file mode 100644
index 000000000..85a8d797a
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-key-value/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-key-value">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB) | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" conte [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+is supported in key/value stores in 2 ways:</p><ol><li>Pre-compute all permutations of possible user queries</li><li>Range scans on event data</li></ol><p>When pre-computing results, the key is the exact parameters of the query, and the value is the result of the query.
+The queries return extremely quickly, but at the cost of flexibility, as ad-hoc exploratory queries are not possible with
+pre-computing every possible query permutation. Pre-computing all permutations of all ad-hoc queries leads to result sets
+that grow exponentially with the number of columns of a data set, and pre-computing queries for complex real-world data sets
+can require hours of pre-processing time.</p><p>The other approach to using key/value stores for aggregations to use the dimensions of an event as the key and the event measures as the value.
+Aggregations are done by issuing range scans on this data. Timeseries specific databases such as OpenTSDB use this approach.
+One of the limitations here is that the key/value storage model does not have indexes for any kind of filtering other than prefix ranges,
+which can be used to filter a query down to a metric and time range, but cannot resolve complex predicates to narrow the exact data to scan.
+When the number of rows to scan gets large, this limitation can greatly reduce performance. It is also harder to achieve good
+locality with key/value stores because most don’t support pushing down aggregates to the storage layer.</p><p>For arbitrary exploration of data (flexible data filtering), Druid's custom column format enables ad-hoc queries without pre-computation. The format
+also enables fast scans on columns, which is important for good aggregation performance.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedI [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-kudu.html/index.html b/docs/26.0.0/comparisons/druid-vs-kudu.html/index.html
new file mode 100644
index 000000000..e25ae1a5d
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-kudu.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/comparisons/druid-vs-kudu">
+ <link rel="canonical" href="/docs/26.0.0/comparisons/druid-vs-kudu" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/comparisons/druid-vs-kudu' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-kudu/index.html b/docs/26.0.0/comparisons/druid-vs-kudu/index.html
new file mode 100644
index 000000000..61707753c
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-kudu/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-kudu">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Druid vs Kudu | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+the process for updating old values should be higher latency in Druid. However, the requirements in Kudu for maintaining extra head space to store
+updates as well as organizing data by id instead of time has the potential to introduce some extra latency and accessing
+of data that is not needed to answer a query at query time.</p><p>Druid summarizes/rollups up data at ingestion time, which in practice reduces the raw data that needs to be
+stored significantly (up to 40 times on average), and increases performance of scanning raw data significantly.
+Druid segments also contain bitmap indexes for fast filtering, which Kudu does not currently support.
+Druid's segment architecture is heavily geared towards fast aggregates and filters, and for OLAP workflows. Appends are very
+fast in Druid, whereas updates of older data are higher latency. This is by design as the data Druid is good for is typically event data,
+and does not need to be updated too frequently. Kudu supports arbitrary primary keys with uniqueness constraints, and
+efficient lookup by ranges of those keys. Kudu chooses not to include the execution engine, but supports sufficient
+operations so as to allow node-local processing from the execution engines. This means that Kudu can support multiple frameworks on the same data (e.g., MR, Spark, and SQL).
+Druid includes its own query layer that allows it to push down aggregations and computations directly to data processes for faster query processing.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_H [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-redshift.html/index.html b/docs/26.0.0/comparisons/druid-vs-redshift.html/index.html
new file mode 100644
index 000000000..42b8b4fe1
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-redshift.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/comparisons/druid-vs-redshift">
+ <link rel="canonical" href="/docs/26.0.0/comparisons/druid-vs-redshift" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/comparisons/druid-vs-redshift' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-redshift/index.html b/docs/26.0.0/comparisons/druid-vs-redshift/index.html
new file mode 100644
index 000000000..7090b4b6b
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-redshift/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-redshift">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Druid vs Redshift | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-spark.html/index.html b/docs/26.0.0/comparisons/druid-vs-spark.html/index.html
new file mode 100644
index 000000000..bd62cc8af
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-spark.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/comparisons/druid-vs-spark">
+ <link rel="canonical" href="/docs/26.0.0/comparisons/druid-vs-spark" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/comparisons/druid-vs-spark' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-spark/index.html b/docs/26.0.0/comparisons/druid-vs-spark/index.html
new file mode 100644
index 000000000..e13b036ac
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-spark/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-spark">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Druid vs Spark | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+RDDs enable data reuse by persisting intermediate results
+in memory and enable Spark to provide fast computations for iterative algorithms.
+This is especially beneficial for certain work flows such as machine
+learning, where the same operation may be applied over and over
+again until some result is converged upon. The generality of Spark makes it very suitable as an engine to process (clean or transform) data.
+Although Spark provides the ability to query data through Spark SQL, much like Hadoop, the query latencies are not specifically targeted to be interactive (sub-second).</p><p>Druid's focus is on extremely low latency queries, and is ideal for powering applications used by thousands of users, and where each query must
+return fast enough such that users can interactively explore through data. Druid fully indexes all data, and can act as a middle layer between Spark and your application.
+One typical setup seen in production is to process data in Spark, and load the processed data into Druid for faster access.</p><p>For more information about using Druid and Spark together, including benchmarks of the two systems, please see:</p><p><a href="https://www.linkedin.com/pulse/combining-druid-spark-interactive-flexible-analytics-scale-butani" target="_blank" rel="noopener noreferrer">https://www.linkedin.com/pulse/combining-druid-spark-interactive-flexible-analytics-scale-butan [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html b/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html
new file mode 100644
index 000000000..4f4ca509b
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop">
+ <link rel="canonical" href="/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop/index.html b/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop/index.html
new file mode 100644
index 000000000..be871b26a
--- /dev/null
+++ b/docs/26.0.0/comparisons/druid-vs-sql-on-hadoop/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-sql-on-hadoop">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Druid vs SQL-on-Hadoop | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+execution engine for various data formats and data stores, and
+many can be made to push down computations down to Druid, while providing a SQL interface to Druid.</p><p>For a direct comparison between the technologies and when to only use one or the other, things basically comes down to your
+product requirements and what the systems were designed to do.</p><p>Druid was designed to</p><ol><li>be an always on service</li><li>ingest data in real-time</li><li>handle slice-n-dice style ad-hoc queries</li></ol><p>SQL-on-Hadoop engines generally sidestep Map/Reduce, instead querying data directly from HDFS or, in some cases, other storage systems.
+Some of these engines (including Impala and Presto) can be co-located with HDFS data nodes and coordinate with them to achieve data locality for queries.
+What does this mean? We can talk about it in terms of three general areas</p><ol><li>Queries</li><li>Data Ingestion</li><li>Query Flexibility</li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="queries">Queries<a href="#queries" class="hash-link" aria-label="Direct link to Queries" title="Direct link to Queries"></a></h3><p>Druid segments stores data in a custom column format. Segments are scanned directly as part of queries and each Druid server
+calculates a set of results that are eventually merged at the Broker level. This means the data that is transferred between servers
+are queries and results, and all computation is done internally as part of the Druid servers.</p><p>Most SQL-on-Hadoop engines are responsible for query planning and execution for underlying storage layers and storage formats.
+They are processes that stay on even if there is no query running (eliminating the JVM startup costs from Hadoop MapReduce).
+Some (Impala/Presto) SQL-on-Hadoop engines have daemon processes that can be run where the data is stored, virtually eliminating network transfer costs. There is still
+some latency overhead (e.g. serialization/deserialization time) associated with pulling data from the underlying storage layer into the computation layer. We are unaware of exactly
+how much of a performance impact this makes.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-ingestion">Data Ingestion<a href="#data-ingestion" class="hash-link" aria-label="Direct link to Data Ingestion" title="Direct link to Data Ingestion"></a></h3><p>Druid is built to allow for real-time ingestion of data. You can ingest data and query it immediately upon ingestion,
+the latency between how quickly the event is reflected in the data is dominated by how long it takes to deliver the event to Druid.</p><p>SQL-on-Hadoop, being based on data in HDFS or some other backing store, are limited in their data ingestion rates by the
+rate at which that backing store can make data available. Generally, the backing store is the biggest bottleneck for
+how quickly data can become available.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="query-flexibility">Query Flexibility<a href="#query-flexibility" class="hash-link" aria-label="Direct link to Query Flexibility" title="Direct link to Query Flexibility"></a></h3><p>Druid's query language is fairly low level and maps to how Druid operates internally. Although Druid can be combined with a high level query
+planner to support most SQL queries and analytic SQL queries (minus joins among large tables),
+base Druid is less flexible than SQL-on-Hadoop solutions for generic processing.</p><p>SQL-on-Hadoop support SQL style queries with full joins.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="druid-vs-parquet">Druid vs Parquet<a href="#druid-vs-parquet" class="hash-link" aria-label="Direct link to Druid vs Parquet" title="Direct link to Druid vs Parquet"></a></h2><p>Parquet is a column storage format that is designed to work with SQL-on-Hadoop engines. Parquet doesn't have a [...]
+relies on external sources to pull data out of it.</p><p>Druid's storage format is highly optimized for linear scans. Although Druid has support for nested data, Parquet's storage format is much
+more hierarchical, and is more designed for binary chunking. In theory, this should lead to faster scans in Druid.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#queries" class="table-of-contents__link toc-highlight">Queries</a></li><li><a href="#data-ingestion" [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration.html/index.html b/docs/26.0.0/configuration.html/index.html
new file mode 100644
index 000000000..80cfb397d
--- /dev/null
+++ b/docs/26.0.0/configuration.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/">
+ <link rel="canonical" href="/docs/26.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/auth.html/index.html b/docs/26.0.0/configuration/auth.html/index.html
new file mode 100644
index 000000000..16d7c7be5
--- /dev/null
+++ b/docs/26.0.0/configuration/auth.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/auth">
+ <link rel="canonical" href="/docs/26.0.0/design/auth" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/auth' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/broker.html/index.html b/docs/26.0.0/configuration/broker.html/index.html
new file mode 100644
index 000000000..80cfb397d
--- /dev/null
+++ b/docs/26.0.0/configuration/broker.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/">
+ <link rel="canonical" href="/docs/26.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/caching.html/index.html b/docs/26.0.0/configuration/caching.html/index.html
new file mode 100644
index 000000000..80cfb397d
--- /dev/null
+++ b/docs/26.0.0/configuration/caching.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/">
+ <link rel="canonical" href="/docs/26.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/coordinator.html/index.html b/docs/26.0.0/configuration/coordinator.html/index.html
new file mode 100644
index 000000000..80cfb397d
--- /dev/null
+++ b/docs/26.0.0/configuration/coordinator.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/">
+ <link rel="canonical" href="/docs/26.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/hadoop.html/index.html b/docs/26.0.0/configuration/hadoop.html/index.html
new file mode 100644
index 000000000..ee2444119
--- /dev/null
+++ b/docs/26.0.0/configuration/hadoop.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/hadoop">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/hadoop" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/hadoop' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/historical.html/index.html b/docs/26.0.0/configuration/historical.html/index.html
new file mode 100644
index 000000000..80cfb397d
--- /dev/null
+++ b/docs/26.0.0/configuration/historical.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/">
+ <link rel="canonical" href="/docs/26.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/human-readable-byte.html/index.html b/docs/26.0.0/configuration/human-readable-byte.html/index.html
new file mode 100644
index 000000000..f183e69c0
--- /dev/null
+++ b/docs/26.0.0/configuration/human-readable-byte.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/human-readable-byte">
+ <link rel="canonical" href="/docs/26.0.0/configuration/human-readable-byte" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/human-readable-byte' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/human-readable-byte/index.html b/docs/26.0.0/configuration/human-readable-byte/index.html
new file mode 100644
index 000000000..07d37a777
--- /dev/null
+++ b/docs/26.0.0/configuration/human-readable-byte/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-configuration/human-readable-byte">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Human-readable Byte Configuration Reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Also, only integers are valid as the number part. For example, you can't replace <code>1200g</code> with <code>1.2t</code>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="supported-units">Supported Units<a href="#supported-units" class="hash-link" aria-label="Direct link to Supported Units" title="Direct link to Supported Units"></a></h3><p>In the world of computer, a unit like <code>K</code> is ambiguous. It means 1000 or 1024 in different contexts, for more information ple [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/index.html b/docs/26.0.0/configuration/index.html
new file mode 100644
index 000000000..3824b7250
--- /dev/null
+++ b/docs/26.0.0/configuration/index.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-configuration/index">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Configuration reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+For example, if <code>druid.zk.paths.base</code> is set to <code>/druid1</code> and <code>druid.zk.paths.indexer.base</code> is set to <code>/druid2</code> then <code>druid.zk.paths.announcementsPath</code> will default to <code>/druid1/announcements</code> while <code>druid.zk.paths.indexer.announcementsPath</code> will default to <code>/druid2/announcements</code>.</p><p>The following path is used for service discovery. It is <strong>not</strong> affected by <code>druid.zk.paths.base</ [...]
+and <code>druid.tlsPort</code> properties on each process. Please see <code>Configuration</code> section of individual processes to check the valid and default values for these ports.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="jetty-server-tls-configuration">Jetty Server TLS Configuration<a href="#jetty-server-tls-configuration" class="hash-link" aria-label="Direct link to Jetty Server TLS Configuration" title="Direct link to Jetty Server TLS Configuration"></a></h4><p>Druid [...]
+The <a href="http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html" target="_blank" rel="noopener noreferrer">Java Cryptography Architecture
+Standard Algorithm Name Documentation for JDK 8</a> lists all possible
+values for the following properties, among others provided by the Java implementation.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.server.https.keyStorePath</code></td><td>The file path or URL of the TLS/SSL Key store.</td><td>none</td><td>yes</td></tr><tr><td><code>druid.server.https.keyStoreType</code></td><td>The type of the key store.</td><td>none</td><td>yes</td></tr><tr><td><code>druid.server.htt [...]
+values for the above mentioned configs among others provided by Java implementation.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="authentication-and-authorization">Authentication and Authorization<a href="#authentication-and-authorization" class="hash-link" aria-label="Direct link to Authentication and Authorization" title="Direct link to Authentication and Authorization"></a></h3><table><thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Default</th><th>Required</ [...]
+For an example of setting up request logging, see <a href="/docs/26.0.0/operations/request-logging">Request logging</a>.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.type</code></td><td>How to log every query request. Choices: <code>noop</code>, <a href="#file-request-logging"><code>file</code></a>, <a href="#emitter-request-logging"><code>emitter</code></a>, <a href="#slf4j-request-logging"><code>slf4j< [...]
+For native queries, the logger only logs requests when the <code>query/time</code> metric exceeds the threshold provided in <code>queryTimeThresholdMs</code>.
+For SQL queries, it only logs requests when the <code>sqlQuery/time</code> metric exceeds threshold provided in <code>sqlQueryTimeThresholdMs</code>.
+See <a href="/docs/26.0.0/operations/metrics">Metrics</a> for more details on query metrics.</p><p>Requests that meet the threshold are logged using the request logger type set in <code>druid.request.logging.delegate.type</code>.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.queryTimeThresholdMs</code></td><td>Threshold value for the <code>query/time</code> metric in milliseconds.</td><td>0, i.e., no filt [...]
+SSLContext that would be used for internal communications between Druid processes.</p><p>In some use cases it may be desirable to have the HTTP Emitter use its own separate truststore configuration. For example, there may be organizational policies that prevent the TLS-enabled metrics receiver's certificate from being added to the same truststore used by Druid's internal HTTP client.</p><p>The following properties allow the HTTP Emitter to use its own truststore configuration w [...]
+For example:</p><ul><li><code>druid.emitter.parametrized.httpEmitting.flushMillis</code></li><li><code>druid.emitter.parametrized.httpEmitting.flushCount</code></li><li><code>druid.emitter.parametrized.httpEmitting.ssl.trustStorePath</code></li></ul><p>Do not specify <code>recipientBaseUrl</code> with the parametrized emitter.
+Instead use <code>recipientBaseUrlPattern</code> described in the table below.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.parametrized.recipientBaseUrlPattern</code></td><td>The URL pattern to send an event to, based on the event's feed. E.g., <code>http://foo.bar/{feed}</code>, that will send event to <code>http://foo.bar/metrics</code> if the event's feed is "metrics".</td><td>none, requi [...]
+The below table shows some important configurations for S3. See <a href="/docs/26.0.0/development/extensions-core/s3">S3 Deep Storage</a> for full configurations.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.storage.bucket</code></td><td>S3 bucket name.</td><td>none</td></tr><tr><td><code>druid.storage.baseKey</code></td><td>S3 object key prefix for storage.</td><td>none</td></tr><tr><td><code>druid.storage.disableAcl</ [...]
+the <a href="/docs/26.0.0/ingestion/native-batch-input-sources#hdfs-input-source">HDFS input source</a>.</p><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.ingestion.hdfs.allowedProtocols</code></td><td>List of protocols</td><td>Allowed protocols for the HDFS input source and HDFS firehose.</td><td>["hdfs"]</td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="http-input [...]
+the <a href="/docs/26.0.0/ingestion/native-batch-input-sources#http-input-source">HTTP input source</a>.</p><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.ingestion.http.allowedProtocols</code></td><td>List of protocols</td><td>Allowed protocols for the HTTP input source and HTTP firehose.</td><td>["http", "https"]</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_L [...]
+When you specify an error response transform strategy other than <code>none</code>, Druid transforms the error responses from Druid services as follows:</p><ul><li>For any query API that fails in the Router service, Druid sets the fields <code>errorClass</code> and <code>host</code> to null. Druid applies the transformation strategy to the <code>errorMessage</code> field.</li><li>For any SQL query API that fails, for example <code>POST /druid/v2/sql/...</code>, Druid sets the fields <cod [...]
+This is the default Druid error response mode. To explicitly enable this strategy, set <code>druid.server.http.errorResponseTransform.strategy</code> to "none".</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="allowed-regular-expression-error-response-transform-strategy">Allowed regular expression error response transform strategy<a href="#allowed-regular-expression-error-response-transform-strategy" class="hash-link" aria-label="Direct link to Allowed regular expression e [...]
+the following properties.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.javascript.enabled</code></td><td>Set to "true" to enable JavaScript functionality. This affects the JavaScript parser, filter, extractionFn, aggregator, post-aggregator, router strategy, and worker selection strategy.</td><td>false</td></tr></tbody></table><blockquote><p>JavaScript-based functionality is disabled by default. Please refer t [...]
+doubleSum, doubleMin, and doubleMax aggregators at indexing time.
+Starting from version 0.13.0 the default will be 64-bit floats for Double columns.
+Using 64-bit representation for double column will lead to avoid precision loss at the cost of doubling the storage size of such columns.
+To keep the old format set the system-wide property <code>druid.indexing.doubleStorage=float</code>.
+You can also use floatSum, floatMin and floatMax to use 32-bit float representation.
+Support for 64-bit floating point columns was released in Druid 0.11.0, so if you use this feature then older versions of Druid will not be able to read your data segments.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexing.doubleStorage</code></td><td>Set to "float" to use 32-bit double representation for double columns.</td><td>double</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" [...]
+However, if you need to do it via HTTP, the JSON object can be submitted to the Coordinator via a POST request at:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">http://<COORDINATOR_IP>:< [...]
+<a href="/docs/26.0.0/operations/api-reference#automatic-compaction-configuration">Coordinator API</a> without restarting Coordinators.</p><p>For details about segment compaction, see <a href="/docs/26.0.0/operations/segment-optimization">Segment size optimization</a>.</p><p>You can configure automatic compaction through the following properties:</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>dataSource</code></td><td>dataSour [...]
+You may see this issue with streaming ingestion from Kafka and Kinesis, which ingest late-arriving data.</p><p>To mitigate this problem, set <code>skipOffsetFromLatest</code> to a value large enough so that arriving data tends to fall outside the offset value from the current time. This way you can avoid conflicts between compaction tasks and realtime ingestion tasks.
+For example, if you want to skip over segments from thirty days prior to the end time of the most recent segment, assign <code>"skipOffsetFromLatest": "P30D"</code>.
+For more information, see <a href="/docs/26.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction-tuningconfig">Automatic compaction tuningConfig<a href="#automatic-compaction-tuningconfig" class="hash-link" aria-label="Direct link to Automatic compaction tuningConfig" title="Direct link to Automatic compaction tuningConfig"></a></h6><p>Auto-compaction suppor [...]
+The below is a list of the supported configurations for auto-compaction.</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>The task type, this should always be <code>index_parallel</code>.</td><td>yes</td></tr><tr><td><code>maxRowsInMemory</code></td><td>Used in determining when intermediate persists to disk should occur. Normally user does not need to set this, but depending on the nature of data, if rows are short in ter [...]
+The below is a list of the supported configurations for auto-compaction.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>dropExisting</code></td><td>If <code>true</code> the compaction task replaces all existing segments fully contained by the umbrella interval of the compacted segments when the task publishes new segments and tombstones. If compaction fails, Druid does not publish any segments or tombstones. WA [...]
+At a high level, the select strategy determines the list of eligible workers for a given task using
+either an <code>affinityConfig</code> or a <code>categorySpec</code>. Then, Druid assigns the task by either trying to distribute load equally
+(<code>equalDistribution</code>) or to fill as many workers as possible to capacity (<code>fillCapacity</code>).
+There are 4 options for select strategies:</p><ul><li><a href="#equaldistribution"><code>equalDistribution</code></a></li><li><a href="#equaldistributionwithcategoryspec"><code>equalDistributionWithCategorySpec</code></a></li><li><a href="#fillcapacity"><code>fillCapacity</code></a></li><li><a href="#fillcapacitywithcategoryspec"><code>fillCapacityWithCategorySpec</code></a></li></ul><p>A <code>javascript</code> option is also available but should only be used for prototyping new strateg [...]
+not be assigned a category, and you want the work to be concentrated on the fewest number of workers to allow the empty ones to scale down.</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="equaldistribution"><code>equalDistribution</code><a href="#equaldistribution" class="hash-link" aria-label="Direct link to equaldistribution" title="Direct link to equaldistribution"></a></h6><p>Tasks are assigned to the MiddleManager with the most free slots at the time the task begins running.
+This evenly distributes work across your MiddleManagers.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>equalDistribution</code></td><td>required; must be <code>equalDistribution</code></td></tr><tr><td><code>affinityConfig</code></td><td><a href="#affinityconfig"><code>AffinityConfig</code></a> object</td><td>null (no affinity)</td></tr></tbody></table><h6 class="anchor anchorWithStickyNavbar_LWe7" id [...]
+By specifying <code>workerCategorySpec</code>, you can assign tasks to run on different categories of MiddleManagers based on the <strong>type</strong> and <strong>dataSource</strong> of the task.
+This strategy doesn't work with <code>AutoScaler</code> since the behavior is undefined.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>equalDistributionWithCategorySpec</code></td><td>required; must be <code>equalDistributionWithCategorySpec</code></td></tr><tr><td><code>workerCategorySpec</code></td><td><a href="#workercategoryspec"><code>WorkerCategorySpec</code></a> object</td><td>null (no wor [...]
+useful when you are auto-scaling MiddleManagers since it tends to pack some full and
+leave others empty. The empty ones can be safely terminated.</p><p>Note that if <code>druid.indexer.runner.pendingTasksRunnerNumThreads</code> is set to <em>N</em> > 1, then this strategy will fill <em>N</em>
+MiddleManagers up to capacity simultaneously, rather than a single MiddleManager.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>fillCapacity</code></td><td>required; must be <code>fillCapacity</code></td></tr><tr><td><code>affinityConfig</code></td><td><a href="#affinityconfig"><code>AffinityConfig</code></a> object</td><td>null (no affinity)</td></tr></tbody></table><h6 class="anchor anchorWithSticky [...]
+The usage is the same as <code>equalDistributionWithCategorySpec</code> strategy.
+This strategy doesn't work with <code>AutoScaler</code> since the behavior is undefined.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>fillCapacityWithCategorySpec</code>.</td><td>required; must be <code>fillCapacityWithCategorySpec</code></td></tr><tr><td><code>workerCategorySpec</code></td><td><a href="#workercategoryspec"><code>WorkerCategorySpec</code></a> object</td><td>null (no worker categ [...]
+The function is passed remoteTaskRunnerConfig, map of workerId to available workers and task to be executed and returns the workerId on which the task should be run or null if the task cannot be run.
+It can be used for rapid development of missing features where the worker selection logic is to be changed or tuned often.
+If the selection logic is quite complex and cannot be easily tested in JavaScript environment,
+its better to write a druid extension module with extending current worker selection strategies written in java.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>javascript</code></td><td>required; must be <code>javascript</code></td></tr><tr><td><code>function</code></td><td>String representing JavaScript function</td><td></td></tr></tbody></table><p>Example: a function that sends batch_index_task to wo [...]
+If not provided, the default is to have no affinity.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>affinity</code></td><td>JSON object mapping a datasource String name to a list of indexing service MiddleManager <code>host:port</code> values. Druid doesn't perform DNS resolution, so the 'host' value must match what is configured on the MiddleManager and what the MiddleManager announces itself as (examine the Ove [...]
+field. If not provided, the default is to not use it at all.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>categoryMap</code></td><td>A JSON map object mapping a task type String name to a <a href="#categoryconfig">CategoryConfig</a> object, by which you can specify category config for different task type.</td><td>{}</td></tr><tr><td><code>strong</code></td><td>With weak workerCategorySpec (the default), tasks for a dataSource [...]
+<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
+ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> in
+<code>druid.indexer.runner.javaOptsArray</code> as documented above.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="peon-query-configuration">Peon query configuration<a href="#peon-query-configuration" class="hash-link" aria-label="Direct link to Peon query configuration" title="Direct link to Peon query configuration"></a></h4><p>See <a href="#general-query-configuration">general query configuration</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="peon-caching">Peon Ca [...]
+<em>medium</em> exist for those buffers: <em>temporary files</em>, <em>off-heap memory</em>, and <em>on-heap memory</em>.</p><p><em>Temporary files</em> (<code>tmpFile</code>) are stored under the task working directory (see <code>druid.worker.baseTaskDirs</code>
+configuration above) and thus share it's mounting properties, e. g. they could be backed by HDD, SSD or memory (tmpfs).
+This type of medium may do unnecessary disk I/O and requires some disk space to be available.</p><p><em>Off-heap memory medium</em> (<code>offHeapMemory</code>) creates buffers in off-heap memory of a JVM process that is running a task.
+This type of medium is preferred, but it may require to allow the JVM to have more off-heap memory, by changing
+<code>-XX:MaxDirectMemorySize</code> configuration. It is not yet understood how does the required off-heap memory size relates
+to the size of the segments being created. But definitely it doesn't make sense to add more extra off-heap memory,
+than the configured maximum <em>heap</em> size (<code>-Xmx</code>) for the same JVM.</p><p><em>On-heap memory medium</em> (<code>onHeapMemory</code>) creates buffers using the allocated heap memory of the JVM process running a task.
+Using on-heap memory introduces garbage collection overhead and so is not recommended in most cases. This type of medium is
+most helpful for tasks run on external clusters where it may be difficult to allocate and work with direct memory
+effectively.</p><p>For most types of tasks SegmentWriteOutMediumFactory could be configured per-task (see <a href="/docs/26.0.0/ingestion/tasks">Tasks</a>
+page, "TuningConfig" section), but if it's not specified for a task, or it's not supported for a particular task type,
+then the value from the configuration below is used:</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.peon.defaultSegmentWriteOutMediumFactory.type</code></td><td><code>tmpFile</code>, <code>offHeapMemory</code>, or <code>onHeapMemory</code>, see explanation above</td><td><code>tmpFile</code></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="indexer">Indexer<a href="#indexer" class="hash-link" aria [...]
+<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
+ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
+line.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-configurations">Query Configurations<a href="#query-configurations" class="hash-link" aria-label="Direct link to Query Configurations" title="Direct link to Query Configurations"></a></h4><p>See <a href="#general-query-configuration">general query configuration</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="indexer-caching">Indexer Caching<a href="#indexer-caching" class="hash-link" aria-label="Direct link to [...]
+<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
+ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
+line.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="historical-query-configuration">Historical query configuration<a href="#historical-query-configuration" class="hash-link" aria-label="Direct link to Historical query configuration" title="Direct link to Historical query configuration"></a></h5><p>See <a href="#general-query-configuration">general query configuration</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="historical-caching">Historical Caching<a href="#histor [...]
+client has the following configuration options.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.http.numConnections</code></td><td>Size of connection pool for the Broker to connect to Historical and real-time processes. If there are more queries than this number that all need to speak to the same process, then they will queue up.</td><td><code>20</code></td></tr><tr><td><code>druid.broker.http.eagerInitialization</c [...]
+<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + 1)</code>. You can
+ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
+line.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="broker-query-configuration">Broker query configuration<a href="#broker-query-configuration" class="hash-link" aria-label="Direct link to Broker query configuration" title="Direct link to Broker query configuration"></a></h5><p>See <a href="#general-query-configuration">general query configuration</a>.</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="broker-generated-query-configuration-supplementation">Broker Generated Que [...]
+of these queries.</p><p>As of now the only supported augmentation is overriding the default query context. This allows an operator the flexibility
+to adjust it as they see fit. A common use of this configuration is to override the query priority of the cluster generated
+queries in order to avoid running as a default priority of 0.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.internal.query.config.context</code></td><td>A string formatted <code>key:value</code> map of a query context to add to internally generated broker queries.</td><td>null</td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="sql">SQL<a href="#sql" class="hash-link" aria-label="Direct lin [...]
+These properties are no longer available. Since Druid 0.18.0, you can use <code>druid.server.http.maxSubqueryRows</code> to control the maximum
+number of rows permitted across all subqueries.</p></blockquote><h4 class="anchor anchorWithStickyNavbar_LWe7" id="broker-caching">Broker Caching<a href="#broker-caching" class="hash-link" aria-label="Direct link to Broker Caching" title="Direct link to Broker Caching"></a></h4><p>You can optionally only configure caching to be enabled on the Broker by setting caching configs here.</p><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></t [...]
+See <a href="/docs/26.0.0/querying/groupbyquery#differences-between-v1-and-v2">Differences between v1 and v2</a> and <a href="/docs/26.0.0/querying/caching">Query caching</a> for more information.</p></blockquote><h4 class="anchor anchorWithStickyNavbar_LWe7" id="segment-discovery">Segment Discovery<a href="#segment-discovery" class="hash-link" aria-label="Direct link to Segment Discovery" title="Direct link to Segment Discovery"></a></h4><table><thead><tr><th>Property</th><th>Possible [...]
+<a href="#broker-caching">Broker</a>, <a href="#historical-caching">Historical</a>, and <a href="#peon-caching">Peon</a> configuration options for how to
+enable it for different processes.</p><p>Druid uses a local in-memory cache by default, unless a different type of cache is specified.
+Use the <code>druid.cache.type</code> configuration to set a different kind of cache.</p><p>Cache settings are set globally, so the same configuration can be re-used
+for both Broker and Historical processes, when defined in the common properties file.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="cache-type">Cache Type<a href="#cache-type" class="hash-link" aria-label="Direct link to Cache Type" title="Direct link to Cache Type"></a></h3><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.cache.type</code></td><td><code>local</code>, <code>memcached</code>, <c [...]
+This may be used to combine a local in-memory cache with a remote memcached cache.</p><p>Cache requests will first check L1 cache before checking L2.
+If there is an L1 miss and L2 hit, it will also populate L1.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.cache.l1.type</code></td><td>type of cache to use for L1 cache. See <code>druid.cache.type</code> configuration for valid types.</td><td><code>caffeine</code></td></tr><tr><td><code>druid.cache.l2.type</code></td><td>type of cache to use for L2 cache. See <code>druid.cache.type</code> configuration for valid types.< [...]
+overridden by setting the runtime property in the format of <code>druid.query.default.context.{query_context_key}</code>.
+The <code>druid.query.default.context.{query_context_key}</code> runtime property prefix applies to all current and future
+query context keys, the same as how query context parameter passed with the query works. Note that the runtime property
+value can be overridden if value for the same key is explicitly specify in the query contexts.</p><p>The precedence chain for query context values is as follows:</p><p>hard-coded default value in Druid code <- runtime property not prefixed with <code>druid.query.default.context</code>
+<- runtime property prefixed with <code>druid.query.default.context</code> <- context parameter in the query</p><p>Note that not all query context key has a runtime property not prefixed with <code>druid.query.default.context</code> that can
+override the hard-coded default value. For example, <code>maxQueuedBytes</code> has <code>druid.broker.http.maxQueuedBytes</code>
+but <code>joinFilterRewriteMaxSize</code> does not. Hence, the only way of overriding <code>joinFilterRewriteMaxSize</code> hard-coded default
+value is with runtime property <code>druid.query.default.context.joinFilterRewriteMaxSize</code>.</p><p>To further elaborate on the previous example:</p><p>If neither <code>druid.broker.http.maxQueuedBytes</code> or <code>druid.query.default.context.maxQueuedBytes</code> is set and
+the query does not have <code>maxQueuedBytes</code> in the context, then the hard-coded value in Druid code is use.
+If runtime property only contains <code>druid.broker.http.maxQueuedBytes=x</code> and query does not have <code>maxQueuedBytes</code> in the
+context, then the value of the property, <code>x</code>, is use. However, if query does have <code>maxQueuedBytes</code> in the context,
+then that value is use instead.
+If runtime property only contains <code>druid.query.default.context.maxQueuedBytes=y</code> OR runtime property contains both
+<code>druid.broker.http.maxQueuedBytes=x</code> and <code>druid.query.default.context.maxQueuedBytes=y</code>, then the value of
+<code>druid.query.default.context.maxQueuedBytes</code>, <code>y</code>, is use (given that query does not have <code>maxQueuedBytes</code> in the
+context). If query does have <code>maxQueuedBytes</code> in the context, then that value is use instead.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="topn-query-config">TopN query config<a href="#topn-query-config" class="hash-link" aria-label="Direct link to TopN query config" title="Direct link to TopN query config"></a></h3><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.topN.minTopNThreshold</code></td><td [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/indexing-service.html/index.html b/docs/26.0.0/configuration/indexing-service.html/index.html
new file mode 100644
index 000000000..80cfb397d
--- /dev/null
+++ b/docs/26.0.0/configuration/indexing-service.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/">
+ <link rel="canonical" href="/docs/26.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/logging.html/index.html b/docs/26.0.0/configuration/logging.html/index.html
new file mode 100644
index 000000000..5d0b1b4bb
--- /dev/null
+++ b/docs/26.0.0/configuration/logging.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/logging">
+ <link rel="canonical" href="/docs/26.0.0/configuration/logging" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/logging' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/logging/index.html b/docs/26.0.0/configuration/logging/index.html
new file mode 100644
index 000000000..72aec52ad
--- /dev/null
+++ b/docs/26.0.0/configuration/logging/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-configuration/logging">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Logging | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/configuratio [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The same services also emit periodic <a href="/docs/26.0.0/configuration/#enabling-metrics">metrics</a> about their state.
+To disable metric info logs set the following runtime property: <code>-Ddruid.emitter.logging.logLevel=debug</code>.</p><p>Druid uses <a href="http://logging.apache.org/log4j/2.x/" target="_blank" rel="noopener noreferrer">log4j2</a> for logging.
+The default configuration file log4j2.xml ships with Druid at the following path: <code>conf/druid/{config}/_common/log4j2.xml</code>.</p><p>By default, Druid uses <code>RollingRandomAccessFile</code> for rollover daily, and keeps log files up to 7 days.
+If that's not suitable in your case, modify the <code>log4j2.xml</code> accordingly.</p><p>The following example log4j2.xml is based upon the micro quickstart:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span clas [...]
+Although Druid shares the log4j configuration file task peon processes,
+the appenders in this file DO NOT take effect for peon processes. Peons always output logs to standard output.
+Middle Managers redirect task logs from standard output to <a href="/docs/26.0.0/configuration/#log-long-term-storage">long-term storage</a>.</p><p>However, log level settings do take effect for these task peon processes.
+This means you can configure loggers at different logging level for task logs using <code>log4j2.xml</code>.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="log-directory">Log directory<a href="#log-directory" class="hash-link" aria-label="Direct link to Log directory" title="Direct link to Log directory"></a></h2><p>The included log4j2.xml configuration for Druid and ZooKeeper writes logs to the <code>log</code> directory at the root of the distribution.</p><p>If you [...]
+Log4j2 writes the main log file and rotates it periodically.
+For example, <code>log/historical.log</code>.</p><p>The secondary log file contains anything that is written by the component
+directly to standard output or standard error without going through log4j2.
+For example, <code>log/historical.stdout.log</code>.
+This consists mainly of messages from the
+Java runtime itself.
+This file is not rotated, but it is generally small due to the low volume of messages.
+If necessary, you can truncate it using the Linux command <code>truncate --size 0 log/historical.stdout.log</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="avoid-reflective-access-warnings-in-logs">Avoid reflective access warnings in logs<a href="#avoid-reflective-access-warnings-in-logs" class="hash-link" aria-label="Direct link to Avoid reflective access warnings in logs" title="Direct link to Avoid reflective access warnings in logs"></a></h2><p>On Java 11, you may see [...]
+about <a href="/docs/26.0.0/operations/java#strong-encapsulation">Java strong encapsulation</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="set-the-logs-to-asynchronously-write">Set the logs to asynchronously write<a href="#set-the-logs-to-asynchronously-write" class="hash-link" aria-label="Direct link to Set the logs to asynchronously write" title="Direct link to Set the logs to asynchronously write"></a></h2><p>If your logs are really chatty, you can set them to write async [...]
+The following example shows a <code>log4j2.xml</code> that configures some of the more chatty classes to write asynchronously:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"><?xml version=" [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/production-cluster.html/index.html b/docs/26.0.0/configuration/production-cluster.html/index.html
new file mode 100644
index 000000000..2bf333382
--- /dev/null
+++ b/docs/26.0.0/configuration/production-cluster.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/tutorials/cluster">
+ <link rel="canonical" href="/docs/26.0.0/tutorials/cluster" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/tutorials/cluster' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/realtime.html/index.html b/docs/26.0.0/configuration/realtime.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/configuration/realtime.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/simple-cluster.html/index.html b/docs/26.0.0/configuration/simple-cluster.html/index.html
new file mode 100644
index 000000000..2bf333382
--- /dev/null
+++ b/docs/26.0.0/configuration/simple-cluster.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/tutorials/cluster">
+ <link rel="canonical" href="/docs/26.0.0/tutorials/cluster" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/tutorials/cluster' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/configuration/zookeeper.html/index.html b/docs/26.0.0/configuration/zookeeper.html/index.html
new file mode 100644
index 000000000..a0f740d67
--- /dev/null
+++ b/docs/26.0.0/configuration/zookeeper.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/dependencies/zookeeper">
+ <link rel="canonical" href="/docs/26.0.0/dependencies/zookeeper" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/dependencies/zookeeper' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management.html/index.html b/docs/26.0.0/data-management.html/index.html
new file mode 100644
index 000000000..7f8a89d37
--- /dev/null
+++ b/docs/26.0.0/data-management.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/">
+ <link rel="canonical" href="/docs/26.0.0/data-management/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/automatic-compaction.html/index.html b/docs/26.0.0/data-management/automatic-compaction.html/index.html
new file mode 100644
index 000000000..b571b6437
--- /dev/null
+++ b/docs/26.0.0/data-management/automatic-compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/automatic-compaction">
+ <link rel="canonical" href="/docs/26.0.0/data-management/automatic-compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/automatic-compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/automatic-compaction/index.html b/docs/26.0.0/data-management/automatic-compaction/index.html
new file mode 100644
index 000000000..5d1322aaa
--- /dev/null
+++ b/docs/26.0.0/data-management/automatic-compaction/index.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/automatic-compaction">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Automatic compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The default indexing period is 30 minutes, meaning that the Coordinator first checks for segments to compact at most 30 minutes from when auto-compaction is enabled.
+This time period affects other Coordinator duties including merge and conversion tasks.
+To configure the auto-compaction time period without interfering with <code>indexingPeriod</code>, see <a href="#set-frequency-of-compaction-runs">Set frequency of compaction runs</a>.</p><p>At every invocation of auto-compaction, the Coordinator initiates a <a href="/docs/26.0.0/design/coordinator#segment-search-policy-in-automatic-compaction">segment search</a> to determine eligible segments to compact.
+When there are eligible segments to compact, the Coordinator issues compaction tasks based on available worker capacity.
+If a compaction task takes longer than the indexing period, the Coordinator waits for it to finish before resuming the period for segment search.</p><p>As a best practice, you should set up auto-compaction for all Druid datasources. You can run compaction tasks manually for cases where you want to allocate more system resources. For example, you may choose to run multiple compaction tasks in parallel to compact an existing datasource for the first time. See <a href="/docs/26.0.0/data-man [...]
+This process differs for manual compaction tasks, which can be submitted from the <a href="/docs/26.0.0/operations/web-console">Tasks view of the web console</a> or the <a href="/docs/26.0.0/operations/api-reference#tasks">Tasks API</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="web-console">web console<a href="#web-console" class="hash-link" aria-label="Direct link to web console" title="Direct link to web console"></a></h3><p>Use the web console to enable automatic compact [...]
+<img loading="lazy" alt="Compaction config in web console" src="/assets/images/compaction-config-2d5e391fe681a9c978060c383357b531.png" width="1250" height="640" class="img_ev3q"></p><p>To disable auto-compaction for a datasource, click <strong>Delete</strong> from the <strong>Compaction config</strong> dialog. Druid does not retain your auto-compaction configuration.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-configuration-api">Compaction configuration API<a href="# [...]
+To enable auto-compaction for a datasource, create a JSON object with the desired auto-compaction settings.
+See <a href="#configure-automatic-compaction">Configure automatic compaction</a> for the syntax of an auto-compaction spec.
+Send the JSON object as a payload in a <a href="/docs/26.0.0/operations/api-reference#automatic-compaction-configuration"><code>POST</code> request</a> to <code>/druid/coordinator/v1/config/compaction</code>.
+The following example configures auto-compaction for the <code>wikipedia</code> datasource:</p><div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">curl --location --request POST 'http://loc [...]
+The automatic compaction system uses the following syntax:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></s [...]
+The following properties only apply to auto-compaction:</p><ul><li><code>skipOffsetFromLatest</code></li><li><code>taskPriority</code></li><li><code>taskContext</code></li></ul><p>Since the automatic compaction system provides a management layer on top of manual compaction tasks,
+the auto-compaction configuration does not include task-specific properties found in a typical Druid ingestion spec.
+The following properties are automatically set by the Coordinator:</p><ul><li><code>type</code>: Set to <code>compact</code>.</li><li><code>id</code>: Generated using the task type, datasource name, interval, and timestamp. The task ID is prefixed with <code>coordinator-issued</code>.</li><li><code>context</code>: Set according to the user-provided <code>taskContext</code>.</li></ul><p>Compaction tasks fetch all <a href="/docs/26.0.0/data-management/compaction#compaction-io-configuration [...]
+<em>unless</em> the following items are all set. It is strongly recommended to set all of these items to maximize performance
+and minimize disk usage of the <code>compact</code> tasks launched by auto-compaction:</p><ul><li><a href="/docs/26.0.0/data-management/compaction#compaction-granularity-spec"><code>granularitySpec</code></a>. All three values must be set to non-null values: <code>segmentGranularity</code>, <code>queryGranularity</code>, and <code>rollup</code>.</li><li><a href="/docs/26.0.0/data-management/compaction#compaction-dimensions-spec"><code>dimensionsSpec</code></a></li><li><code>metricsSpec</ [...]
+Set the time period of the duty group in the <code>coordinator/runtime.properties</code> file.
+The following example shows how to create a duty group named <code>compaction</code> and set the auto-compaction period to 1 minute:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.coordinato [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/compaction.html/index.html b/docs/26.0.0/data-management/compaction.html/index.html
new file mode 100644
index 000000000..b1c330f7f
--- /dev/null
+++ b/docs/26.0.0/data-management/compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/compaction">
+ <link rel="canonical" href="/docs/26.0.0/data-management/compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/compaction/index.html b/docs/26.0.0/data-management/compaction/index.html
new file mode 100644
index 000000000..db029695e
--- /dev/null
+++ b/docs/26.0.0/data-management/compaction/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/compaction">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/data-mana [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Another option is to set the compaction task to higher priority than the ingestion task.
+For more information, see <a href="/docs/26.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-granularity-handling">Segment granularity handling<a href="#segment-granularity-handling" class="hash-link" aria-label="Direct link to Segment granularity handling" title="Direct link to Segment granularity handling"></a></h3><p>Unless you modify the segment granularity in <a [...]
+See <a href="/docs/26.0.0/ingestion/rollup">Roll-up</a> for more details.
+You can check that your segments are rolled up or not by using <a href="/docs/26.0.0/querying/segmentmetadataquery#analysistypes">Segment Metadata Queries</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="setting-up-manual-compaction">Setting up manual compaction<a href="#setting-up-manual-compaction" class="hash-link" aria-label="Direct link to Setting up manual compaction" title="Direct link to Setting up manual compaction"></a></h2><p>To perform a manual compaction, you subm [...]
+If you don't specify <code>granularitySpec</code>, Druid retains the original segment and query granularities when compaction is complete.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-io-configuration">Compaction I/O configuration<a href="#compaction-io-configuration" class="hash-link" aria-label="Direct link to Compaction I/O configuration" title="Direct link to Compaction I/O configuration"></a></h3><p>The compaction <code>ioConfig</code> requires specifying < [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/delete.html/index.html b/docs/26.0.0/data-management/delete.html/index.html
new file mode 100644
index 000000000..f7d9f7d96
--- /dev/null
+++ b/docs/26.0.0/data-management/delete.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/delete">
+ <link rel="canonical" href="/docs/26.0.0/data-management/delete" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/delete' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/delete/index.html b/docs/26.0.0/data-management/delete/index.html
new file mode 100644
index 000000000..f61954d4a
--- /dev/null
+++ b/docs/26.0.0/data-management/delete/index.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/delete">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Data deletion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/data-m [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+deleting data for time chunks by dropping segments. This is a fast, metadata-only operation.</p><p>Deletion by time range happens in two steps:</p><ol><li>Segments to be deleted must first be marked as <a href="/docs/26.0.0/design/architecture#segment-lifecycle">"unused"</a>. This can
+happen when a segment is dropped by a <a href="/docs/26.0.0/operations/rule-configuration">drop rule</a> or when you manually mark a
+segment unused through the Coordinator API or web console. This is a soft delete: the data is not available for
+querying, but the segment files remains in deep storage, and the segment records remains in the metadata store.</li><li>Once a segment is marked "unused", you can use a <a href="#kill-task"><code>kill</code> task</a> to permanently delete the segment file from
+deep storage and remove its record from the metadata store. This is a hard delete: the data is unrecoverable unless
+you have a backup.</li></ol><p>For documentation on disabling segments using the Coordinator API, see the
+<a href="/docs/26.0.0/operations/api-reference#coordinator-datasources">Coordinator API reference</a>.</p><p>A data deletion tutorial is available at <a href="/docs/26.0.0/tutorials/tutorial-delete-data">Tutorial: Deleting data</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="by-time-range-automatically">By time range, automatically<a href="#by-time-range-automatically" class="hash-link" aria-label="Direct link to By time range, automatically" title="Direct link to By time rang [...]
+where data should be preserved, and intervals where data should be discarded. Data that falls under a drop rule is
+marked unused, in the same manner as if you <a href="#by-time-range-manually">manually mark that time range unused</a>. This is a
+fast, metadata-only operation.</p><p>Data that is dropped in this way is marked unused, but remains in deep storage. To permanently delete it, use a
+<a href="#kill-task"><code>kill</code> task</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="specific-records">Specific records<a href="#specific-records" class="hash-link" aria-label="Direct link to Specific records" title="Direct link to Specific records"></a></h2><p>Druid supports deleting specific records using <a href="/docs/26.0.0/data-management/update#reindex">reindexing</a> with a filter. The filter specifies which
+data remains after reindexing, so it must be the inverse of the data you want to delete. Because segments must be
+rewritten to delete data in this way, it can be a time-consuming operation.</p><p>For example, to delete records where <code>userName</code> is <code>'bob'</code> with native batch indexing, use a
+<a href="/docs/26.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> with filter <code>{"type": "not", "field": {"type":
+"selector", "dimension": "userName", "value": "bob"}}</code>.</p><p>To delete the same records using SQL, use <a href="/docs/26.0.0/multi-stage-query/concepts#replace">REPLACE</a> with <code>WHERE userName <> 'bob'</code>.</p><p>To reindex using <a href="/docs/26.0.0/ingestion/native-batch">native batch</a>, use the <a href="/docs/26.0.0/ingestion/native-batch-input-sources#druid-input-source"><code>druid</code> input
+source</a>. If needed,
+<a href="/docs/26.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> can be used to filter or modify data during the
+reindexing job. To reindex with SQL, use <a href="/docs/26.0.0/multi-stage-query/reference#replace"><code>REPLACE <table> OVERWRITE</code></a>
+with <code>SELECT ... FROM <table></code>. (Druid does not have <code>UPDATE</code> or <code>ALTER TABLE</code> statements.) Any SQL SELECT query can be
+used to filter, modify, or enrich the data during the reindexing job.</p><p>Data that is deleted in this way is marked unused, but remains in deep storage. To permanently delete it, use a <a href="#kill-task"><code>kill</code>
+task</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="entire-table">Entire table<a href="#entire-table" class="hash-link" aria-label="Direct link to Entire table" title="Direct link to Entire table"></a></h2><p>Deleting an entire table works the same way as <a href="#by-time-range-manually">deleting part of a table by time range</a>. First,
+mark all segments unused using the Coordinator API or web console. Then, optionally, delete it permanently using a
+<a href="#kill-task"><code>kill</code> task</a>.</p><a name="kill-task"></a><h2 class="anchor anchorWithStickyNavbar_LWe7" id="permanently-kill-task">Permanently (<code>kill</code> task)<a href="#permanently-kill-task" class="hash-link" aria-label="Direct link to permanently-kill-task" title="Direct link to permanently-kill-task"></a></h2><p>Data that has been overwritten or soft-deleted still remains as segments that have been marked unused. You can use a
+<code>kill</code> task to permanently delete this data.</p><p>The available grammar is:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span> [...]
+deep storage. This operation cannot be undone.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/data-management/update"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Data updates</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/data-management/schema-changes"><div class="pagination-nav__sublabel [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/index.html b/docs/26.0.0/data-management/index.html
new file mode 100644
index 000000000..079599d2a
--- /dev/null
+++ b/docs/26.0.0/data-management/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/index">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Data management | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/data [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+files called <a href="/docs/26.0.0/design/segments">segments</a>. Data management operations involving replacing, or deleting,
+these segments include:</p><ul><li><a href="/docs/26.0.0/data-management/update">Updates</a> to existing data.</li><li><a href="/docs/26.0.0/data-management/delete">Deletion</a> of existing data.</li><li><a href="/docs/26.0.0/data-management/schema-changes">Schema changes</a> for new and existing data.</li><li><a href="/docs/26.0.0/data-management/compaction">Compaction</a> and <a href="/docs/26.0.0/data-management/automatic-compaction">automatic compaction</a>, which reindex existing data to
+optimize storage footprint and performance.</li></ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/ingestion/faq"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Troubleshooting FAQ</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/data-management/update"><div class="pagination-nav__sublabel">Next< [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/schema-changes.html/index.html b/docs/26.0.0/data-management/schema-changes.html/index.html
new file mode 100644
index 000000000..0c65f750a
--- /dev/null
+++ b/docs/26.0.0/data-management/schema-changes.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/schema-changes">
+ <link rel="canonical" href="/docs/26.0.0/data-management/schema-changes" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/schema-changes' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/schema-changes/index.html b/docs/26.0.0/data-management/schema-changes/index.html
new file mode 100644
index 000000000..9048d2807
--- /dev/null
+++ b/docs/26.0.0/data-management/schema-changes/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/schema-changes">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Schema changes | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/data- [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+It is sufficient to update your supervisor spec, if using <a href="/docs/26.0.0/ingestion/#streaming">streaming ingestion</a>, or to
+provide the new schema the next time you do a <a href="/docs/26.0.0/ingestion/#batch">batch ingestion</a>. This is made possible by
+the fact that each <a href="/docs/26.0.0/design/architecture#datasources-and-segments">segment</a>, at the time it is created, stores a
+copy of its own schema. Druid reconciles all of these individual segment schemas automatically at query time.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="for-existing-data">For existing data<a href="#for-existing-data" class="hash-link" aria-label="Direct link to For existing data" title="Direct link to For existing data"></a></h2><p>Schema changes are sometimes necessary for existing data. For example, you may want to change the type of a column in
+previously-ingested data, or drop a column entirely. Druid handles this using <a href="/docs/26.0.0/data-management/update">reindexing</a>, the same method
+it uses to handle updates of existing data. Reindexing involves rewriting all affected segments and can be a
+time-consuming operation.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/data-management/delete"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Data deletion</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/data-management/compaction"><div class="pagination-nav__sublabel">Next</div><div class=" [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/update.html/index.html b/docs/26.0.0/data-management/update.html/index.html
new file mode 100644
index 000000000..5423eae6c
--- /dev/null
+++ b/docs/26.0.0/data-management/update.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/update">
+ <link rel="canonical" href="/docs/26.0.0/data-management/update" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/update' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/data-management/update/index.html b/docs/26.0.0/data-management/update/index.html
new file mode 100644
index 000000000..13393023d
--- /dev/null
+++ b/docs/26.0.0/data-management/update/index.html
@@ -0,0 +1,45 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/update">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Data updates | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/data-ma [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+overwriting existing data using time ranges. Data outside the replacement time range is not touched. Overwriting of
+existing data is done using the same mechanisms as <a href="/docs/26.0.0/ingestion/#batch">batch ingestion</a>.</p><p>For example:</p><ul><li><a href="/docs/26.0.0/ingestion/native-batch">Native batch</a> with <code>appendToExisting: false</code>, and <code>intervals</code> set to a specific
+time range, overwrites data for that time range.</li><li><a href="/docs/26.0.0/multi-stage-query/reference#replace">SQL <code>REPLACE <table> OVERWRITE [ALL | WHERE ...]</code></a> overwrites data for
+the entire table or for a specified time range.</li></ul><p>In both cases, Druid's atomic update mechanism ensures that queries will flip seamlessly from the old data to the new
+data on a time-chunk-by-time-chunk basis.</p><p>Ingestion and overwriting cannot run concurrently for the same time range of the same datasource. While an overwrite job
+is ongoing for a particular time range of a datasource, new ingestions for that time range are queued up. Ingestions for
+other time ranges proceed as normal. Read-only queries also proceed as normal, using the pre-existing version of the
+data.</p><blockquote><p>Druid does not support single-record updates by primary key.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="reindex">Reindex<a href="#reindex" class="hash-link" aria-label="Direct link to Reindex" title="Direct link to Reindex"></a></h2><p>Reindexing is an <a href="#overwrite">overwrite of existing data</a> where the source of new data is the existing data itself. It
+is used to perform schema changes, repartition data, filter out unwanted data, enrich existing data, and so on. This
+behaves just like any other <a href="#overwrite">overwrite</a> with regard to atomic updates and locking.</p><p>With <a href="/docs/26.0.0/ingestion/native-batch">native batch</a>, use the <a href="/docs/26.0.0/ingestion/native-batch-input-sources#druid-input-source"><code>druid</code> input
+source</a>. If needed,
+<a href="/docs/26.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> can be used to filter or modify data during the
+reindexing job.</p><p>With SQL, use <a href="/docs/26.0.0/multi-stage-query/reference#replace"><code>REPLACE <table> OVERWRITE</code></a> with <code>SELECT ... FROM <table></code>.
+(Druid does not have <code>UPDATE</code> or <code>ALTER TABLE</code> statements.) Any SQL SELECT query can be used to filter,
+modify, or enrich the data during the reindexing job.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="rolled-up-datasources">Rolled-up datasources<a href="#rolled-up-datasources" class="hash-link" aria-label="Direct link to Rolled-up datasources" title="Direct link to Rolled-up datasources"></a></h2><p>Rolled-up datasources can be effectively updated using appends, without rewrites. When you append a row that has an
+identical set of dimensions to an existing row, queries that use aggregation operators automatically combine those two
+rows together at query time.</p><p><a href="/docs/26.0.0/data-management/compaction">Compaction</a> or <a href="/docs/26.0.0/data-management/automatic-compaction">automatic compaction</a> can be used to physically combine these
+matching rows together later on, by rewriting segments in the background.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="lookups">Lookups<a href="#lookups" class="hash-link" aria-label="Direct link to Lookups" title="Direct link to Lookups"></a></h2><p>If you have a dimension where values need to be updated frequently, try first using <a href="/docs/26.0.0/querying/lookups">lookups</a>. A
+classic use case of lookups is when you have an ID dimension stored in a Druid segment, and want to map the ID dimension to a
+human-readable string that may need to be updated periodically.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/data-management/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Overview</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/data-management/delete"><div class="pagination-nav__sublabel" [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/dependencies/cassandra-deep-storage.html/index.html b/docs/26.0.0/dependencies/cassandra-deep-storage.html/index.html
new file mode 100644
index 000000000..400b96419
--- /dev/null
+++ b/docs/26.0.0/dependencies/cassandra-deep-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/cassandra">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/cassandra" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/cassandra' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/dependencies/deep-storage.html/index.html b/docs/26.0.0/dependencies/deep-storage.html/index.html
new file mode 100644
index 000000000..24117bc0d
--- /dev/null
+++ b/docs/26.0.0/dependencies/deep-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/dependencies/deep-storage">
+ <link rel="canonical" href="/docs/26.0.0/dependencies/deep-storage" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/dependencies/deep-storage' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/dependencies/deep-storage/index.html b/docs/26.0.0/dependencies/deep-storage/index.html
new file mode 100644
index 000000000..d0ec25837
--- /dev/null
+++ b/docs/26.0.0/dependencies/deep-storage/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-dependencies/deep-storage">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Deep storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/depende [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+use cloud-based deep storage (<a href="#amazon-s3-or-s3-compatible">Amazon S3</a>, <a href="#google-cloud-storage">Google Cloud Storage</a>,
+or <a href="#azure-blob-storage">Azure Blob Storage</a>), S3-compatible storage (like Minio), or <a href="#hdfs">HDFS</a>. These options are
+generally more convenient, more scalable, and more robust than setting up a shared filesystem.</p><p>The following configurations in <code>common.runtime.properties</code> apply to local storage:</p><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.storage.type</code></td><td><code>local</code></td><td></td><td>Must be set.</td></tr><tr><td><code>druid.storage.storageDirectory</code></td><td>any local di [...]
+<code>druid.segmentCache.infoDir</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="amazon-s3-or-s3-compatible">Amazon S3 or S3-compatible<a href="#amazon-s3-or-s3-compatible" class="hash-link" aria-label="Direct link to Amazon S3 or S3-compatible" title="Direct link to Amazon S3 or S3-compatible"></a></h2><p>See <a href="/docs/26.0.0/development/extensions-core/s3"><code>druid-s3-extensions</code></a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="google-cloud-storag [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/dependencies/metadata-storage.html/index.html b/docs/26.0.0/dependencies/metadata-storage.html/index.html
new file mode 100644
index 000000000..d3a245ae0
--- /dev/null
+++ b/docs/26.0.0/dependencies/metadata-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/dependencies/metadata-storage">
+ <link rel="canonical" href="/docs/26.0.0/dependencies/metadata-storage" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/dependencies/metadata-storage' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/dependencies/metadata-storage/index.html b/docs/26.0.0/dependencies/metadata-storage/index.html
new file mode 100644
index 000000000..1a02c5e25
--- /dev/null
+++ b/docs/26.0.0/dependencies/metadata-storage/index.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-dependencies/metadata-storage">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Metadata storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/dep [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Druid uses the metadata store to house various metadata about the system, but not to store the actual data.
+The metadata store retains all metadata essential for a Druid cluster to work.</p><p>The metadata store includes the following:</p><ul><li>Segments records</li><li>Rule records</li><li>Configuration records</li><li>Task-related tables</li><li>Audit records</li></ul><p>Derby is the default metadata store for Druid, however, it is not suitable for production.
+<a href="/docs/26.0.0/development/extensions-core/mysql">MySQL</a> and <a href="/docs/26.0.0/development/extensions-core/postgresql">PostgreSQL</a> are more production suitable metadata stores.
+See <a href="/docs/26.0.0/configuration/#metadata-storage">Metadata storage configuration</a> for the default configuration settings.</p><blockquote><p>We also recommend you set up a high availability environment because there is no way to restore lost metadata.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="available-metadata-stores">Available metadata stores<a href="#available-metadata-stores" class="hash-link" aria-label="Direct link to Available metadata stores" t [...]
+Define these properties with a <code>druid.metadata.storage.connector.dbcp.</code> prefix.
+For example:</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.metadata.storage.connector.dbcp.maxConnLifetimeMillis=1200000</span><br></span><span class="token-line" [...]
+"used segments" elsewhere in the documentation and throughout the project.) The table is polled by the
+<a href="/docs/26.0.0/design/coordinator">Coordinator</a> to determine the set of segments that should be available for querying in the
+system. The table has two main functional columns, the other columns are for indexing purposes.</p><p>Value 1 in the <code>used</code> column means that the segment should be "used" by the cluster (i.e., it should be loaded and
+available for requests). Value 0 means that the segment should not be loaded into the cluster. We do this as a means of
+unloading segments from the cluster without actually removing their metadata (which allows for simpler rolling back if
+that is ever an issue).</p><p>The <code>payload</code> column stores a JSON blob that has all of the metadata for the segment.
+Some of the data in the <code>payload</code> column intentionally duplicates data from other columns in the segments table.
+As an example, the <code>payload</code> column may take the following form:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class= [...]
+land. These rules are used by the <a href="/docs/26.0.0/design/coordinator">Coordinator</a>
+when making segment (re-)allocation decisions about the cluster.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="config-table">Config table<a href="#config-table" class="hash-link" aria-label="Direct link to Config table" title="Direct link to Config table"></a></h3><p>The config table stores runtime configuration objects. We do not have
+many of these yet and we are not sure if we will keep this mechanism going
+forward, but it is the beginnings of a method of changing some configuration
+parameters across the cluster at runtime.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="task-related-tables">Task-related tables<a href="#task-related-tables" class="hash-link" aria-label="Direct link to Task-related tables" title="Direct link to Task-related tables"></a></h3><p>Task-related tables are created and used by the <a href="/docs/26.0.0/design/overlord">Overlord</a> and <a href="/docs/26.0.0/design/middlemanager">MiddleManager</a> when managing tasks.</p><h3 class="an [...]
+such as rule changes done by <a href="/docs/26.0.0/design/coordinator">Coordinator</a> and other
+config changes.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-storage-access">Metadata storage access<a href="#metadata-storage-access" class="hash-link" aria-label="Direct link to Metadata storage access" title="Direct link to Metadata storage access"></a></h2><p>Only the following processes access the metadata storage:</p><ol><li>Indexing service processes (if any)</li><li>Realtime processes (if any)</li><li>Coordinator processes</li></ol><p>Thus you need to give perm [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/dependencies/zookeeper.html/index.html b/docs/26.0.0/dependencies/zookeeper.html/index.html
new file mode 100644
index 000000000..a0f740d67
--- /dev/null
+++ b/docs/26.0.0/dependencies/zookeeper.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/dependencies/zookeeper">
+ <link rel="canonical" href="/docs/26.0.0/dependencies/zookeeper" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/dependencies/zookeeper' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/dependencies/zookeeper/index.html b/docs/26.0.0/dependencies/zookeeper/index.html
new file mode 100644
index 000000000..e115b2c90
--- /dev/null
+++ b/docs/26.0.0/dependencies/zookeeper/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-dependencies/zookeeper">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">ZooKeeper | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/dependenci [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design.html/index.html b/docs/26.0.0/design.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/design.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/architecture.html/index.html b/docs/26.0.0/design/architecture.html/index.html
new file mode 100644
index 000000000..1e5a01137
--- /dev/null
+++ b/docs/26.0.0/design/architecture.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/architecture">
+ <link rel="canonical" href="/docs/26.0.0/design/architecture" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/architecture' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/architecture/index.html b/docs/26.0.0/design/architecture/index.html
new file mode 100644
index 000000000..a91ac49d4
--- /dev/null
+++ b/docs/26.0.0/design/architecture/index.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/architecture">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Design | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/design/archit [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+leverage existing infrastructure, where present.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deep-storage">Deep storage<a href="#deep-storage" class="hash-link" aria-label="Direct link to Deep storage" title="Direct link to Deep storage"></a></h3><p>Druid uses deep storage to store any data that has been ingested into the system. Deep storage is shared file
+storage accessible by every Druid server. In a clustered deployment, this is typically a distributed object store like S3 or
+HDFS, or a network mounted filesystem. In a single-server deployment, this is typically local disk.</p><p>Druid uses deep storage only as a backup of your data and as a way to transfer data in the background between
+Druid processes. Druid stores data in files called <em>segments</em>. Historical processes cache data segments on
+local disk and serve queries from that cache as well as from an in-memory cache.
+This means that Druid never needs to access deep storage
+during a query, helping it offer the best query latencies possible. It also means that you must have enough disk space
+both in deep storage and across your Historical servers for the data you plan to load.</p><p>Deep storage is an important part of Druid's elastic, fault-tolerant design. Druid bootstraps from deep storage even
+if every single data server is lost and re-provisioned.</p><p>For more details, please see the <a href="/docs/26.0.0/dependencies/deep-storage">Deep storage</a> page.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-storage">Metadata storage<a href="#metadata-storage" class="hash-link" aria-label="Direct link to Metadata storage" title="Direct link to Metadata storage"></a></h3><p>The metadata storage holds various shared system metadata such as segment usage information a [...]
+clustered deployment, this is typically a traditional RDBMS like PostgreSQL or MySQL. In a single-server
+deployment, it is typically a locally-stored Apache Derby database.</p><p>For more details, please see the <a href="/docs/26.0.0/dependencies/metadata-storage">Metadata storage</a> page.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper">ZooKeeper<a href="#zookeeper" class="hash-link" aria-label="Direct link to ZooKeeper" title="Direct link to ZooKeeper"></a></h3><p>Used for internal service discovery, coordination, and leader election.</p><p>For more details, please see t [...]
+partitioned by time and, optionally, further partitioned by other attributes. Each time range is called a <em>chunk</em> (for
+example, a single day, if your datasource is partitioned by day). Within a chunk, data is partitioned into one or more
+<a href="/docs/26.0.0/design/segments"><em>segments</em></a>. Each segment is a single file, typically comprising up to a few million rows of data. Since segments are
+organized into time chunks, it's sometimes helpful to think of segments as living on a timeline like the following:</p><p><img loading="lazy" src="/assets/images/druid-timeline-1eb095729ad3c5084dc7ff60aad39421.png" width="1548" height="535" class="img_ev3q"></p><p>A datasource may have anywhere from just a few segments, up to hundreds of thousands and even millions of segments. Each
+segment is created by a MiddleManager as <em>mutable</em> and <em>uncommitted</em>. Data is queryable as soon as it is added to
+an uncommitted segment. The segment
+building process accelerates later queries by producing a data file that is compact and indexed:</p><ul><li>Conversion to columnar format</li><li>Indexing with bitmap indexes</li><li>Compression<ul><li>Dictionary encoding with id storage minimization for String columns</li><li>Bitmap compression for bitmap indexes</li><li>Type-aware compression for all columns</li></ul></li></ul><p>Periodically, segments are <em>committed</em> and <em>published</em> to <a href="#deep-storage">deep storage</a>,
+become immutable, and move from MiddleManagers to the Historical processes. An entry about the segment is also written
+to the <a href="#metadata-storage">metadata store</a>. This entry is a self-describing bit of metadata about the segment, including
+things like the schema of the segment, its size, and its location on deep storage. These entries tell the
+Coordinator what data is available on the cluster.</p><p>For details on the segment file format, please see <a href="/docs/26.0.0/design/segments">segment files</a>.</p><p>For details on modeling your data in Druid, see <a href="/docs/26.0.0/ingestion/schema-design">schema design</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="indexing-and-handoff">Indexing and handoff<a href="#indexing-and-handoff" class="hash-link" aria-label="Direct link to Indexing and handoff" title="Dire [...]
+and begin being served by Historical processes. On the indexing side:</p><ol><li>An <em>indexing task</em> starts running and building a new segment. It must determine the identifier of the segment before
+it starts building it. For a task that is appending (like a Kafka task, or an index task in append mode) this is
+done by calling an "allocate" API on the Overlord to potentially add a new partition to an existing set of segments. For
+a task that is overwriting (like a Hadoop task, or an index task <em>not</em> in append mode) this is done by locking an
+interval and creating a new version number and new set of segments.</li><li>If the indexing task is a realtime task (like a Kafka task) then the segment is immediately queryable at this point.
+It's available, but unpublished.</li><li>When the indexing task has finished reading data for the segment, it pushes it to deep storage and then publishes it
+by writing a record into the metadata store.</li><li>If the indexing task is a realtime task, then to ensure data is continuously available for queries, it waits for a Historical process to load the segment. If the
+indexing task is not a realtime task, it exits immediately.</li></ol><p>On the Coordinator / Historical side:</p><ol><li>The Coordinator polls the metadata store periodically (by default, every 1 minute) for newly published segments.</li><li>When the Coordinator finds a segment that is published and used, but unavailable, it chooses a Historical process
+to load that segment and instructs that Historical to do so.</li><li>The Historical loads the segment and begins serving it.</li><li>At this point, if the indexing task was waiting for handoff, it will exit.</li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-identifiers">Segment identifiers<a href="#segment-identifiers" class="hash-link" aria-label="Direct link to Segment identifiers" title="Direct link to Segment identifiers"></a></h3><p>Segments all have a four-part i [...]
+at ingestion time).</li><li>Version number (generally an ISO8601 timestamp corresponding to when the segment set was first started).</li><li>Partition number (an integer, unique within a datasource+interval+version; may not necessarily be contiguous).</li></ul><p>For example, this is the identifier for a segment in datasource <code>clarity-cloud0</code>, time chunk
+<code>2018-05-21T16:00:00.000Z/2018-05-21T17:00:00.000Z</code>, version <code>2018-05-21T15:56:09.909Z</code>, and partition number 1:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">clarity-cloud0 [...]
+example, which is a segment in the same time chunk as the previous one, but with partition number 0 instead of 1:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">clarity-cloud0_2018-05-21T16:00:00. [...]
+case good for you and you can skip this section!</p><p>The version number provides a form of <a href="https://en.wikipedia.org/wiki/Multiversion_concurrency_control" target="_blank" rel="noopener noreferrer"><em>multi-version concurrency control</em></a> (MVCC) to
+support batch-mode overwriting. If all you ever do is append data, then there will be just a
+single version for each time chunk. But when you overwrite data, Druid will seamlessly switch from
+querying the old version to instead query the new, updated versions. Specifically, a new set of
+segments is created with the same datasource, same time interval, but a higher version number. This is a signal to the
+rest of the Druid system that the older version should be removed from the cluster, and the new version should replace
+it.</p><p>The switch appears to happen instantaneously to a user, because Druid handles this by first loading the new data (but
+not allowing it to be queried), and then, as soon as the new data is all loaded, switching all new queries to use those
+new segments. Then it drops the old segments a few minutes later.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-lifecycle">Segment lifecycle<a href="#segment-lifecycle" class="hash-link" aria-label="Direct link to Segment lifecycle" title="Direct link to Segment lifecycle"></a></h3><p>Each segment has a lifecycle that involves the following three major areas:</p><ol><li><strong>Metadata store:</strong> Segment metadata (a small JSON payload generally no more than a few K [...]
+<a href="/docs/26.0.0/dependencies/metadata-storage">metadata store</a> once a segment is done being constructed. The act of inserting
+a record for a segment into the metadata store is called <em>publishing</em>. These metadata records have a boolean flag
+named <code>used</code>, which controls whether the segment is intended to be queryable or not. Segments created by realtime tasks will be
+available before they are published, since they are only published when the segment is complete and will not accept
+any additional rows of data.</li><li><strong>Deep storage:</strong> Segment data files are pushed to deep storage once a segment is done being constructed. This
+happens immediately before publishing metadata to the metadata store.</li><li><strong>Availability for querying:</strong> Segments are available for querying on some Druid data server, like a realtime task
+or a Historical process.</li></ol><p>You can inspect the state of currently active segments using the Druid SQL
+<a href="/docs/26.0.0/querying/sql-metadata-tables#segments-table"><code>sys.segments</code> table</a>. It includes the following flags:</p><ul><li><code>is_published</code>: True if segment metadata has been published to the metadata store and <code>used</code> is true.</li><li><code>is_available</code>: True if the segment is currently available for querying, either on a realtime task or Historical
+process.</li><li><code>is_realtime</code>: True if the segment is <em>only</em> available on realtime tasks. For datasources that use realtime ingestion,
+this will generally start off <code>true</code> and then become <code>false</code> as the segment is published and handed off.</li><li><code>is_overshadowed</code>: True if the segment is published (with <code>used</code> set to true) and is fully overshadowed by some other
+published segments. Generally this is a transient state, and segments in this state will soon have their <code>used</code> flag
+automatically set to false.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="availability-and-consistency">Availability and consistency<a href="#availability-and-consistency" class="hash-link" aria-label="Direct link to Availability and consistency" title="Direct link to Availability and consistency"></a></h3><p>Druid has an architectural separation between ingestion and querying, as described above in
+<a href="#indexing-and-handoff">Indexing and handoff</a>. This means that when understanding Druid's availability and
+consistency properties, we must look at each function separately.</p><p>On the <strong>ingestion side</strong>, Druid's primary <a href="/docs/26.0.0/ingestion/#ingestion-methods">ingestion methods</a> are all
+pull-based and offer transactional guarantees. This means that you are guaranteed that ingestion using these
+methods will publish in an all-or-nothing manner:</p><ul><li>Supervised "seekable-stream" ingestion methods like <a href="/docs/26.0.0/development/extensions-core/kafka-ingestion">Kafka</a> and
+<a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Kinesis</a>. With these methods, Druid commits stream offsets to its
+<a href="#metadata-storage">metadata store</a> alongside segment metadata, in the same transaction. Note that ingestion of data
+that has not yet been published can be rolled back if ingestion tasks fail. In this case, partially-ingested data is
+discarded, and Druid will resume ingestion from the last committed set of stream offsets. This ensures exactly-once
+publishing behavior.</li><li><a href="/docs/26.0.0/ingestion/hadoop">Hadoop-based batch ingestion</a>. Each task publishes all segment metadata in a single
+transaction.</li><li><a href="/docs/26.0.0/ingestion/native-batch">Native batch ingestion</a>. In parallel mode, the supervisor task publishes all segment
+metadata in a single transaction after the subtasks are finished. In simple (single-task) mode, the single task
+publishes all segment metadata in a single transaction after it is complete.</li></ul><p>Additionally, some ingestion methods offer an <em>idempotency</em> guarantee. This means that repeated executions of the same
+ingestion will not cause duplicate data to be ingested:</p><ul><li>Supervised "seekable-stream" ingestion methods like <a href="/docs/26.0.0/development/extensions-core/kafka-ingestion">Kafka</a> and
+<a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Kinesis</a> are idempotent due to the fact that stream offsets and
+segment metadata are stored together and updated in lock-step.</li><li><a href="/docs/26.0.0/ingestion/hadoop">Hadoop-based batch ingestion</a> is idempotent unless one of your input sources
+is the same Druid datasource that you are ingesting into. In this case, running the same task twice is non-idempotent,
+because you are adding to existing data instead of overwriting it.</li><li><a href="/docs/26.0.0/ingestion/native-batch">Native batch ingestion</a> is idempotent unless
+<a href="/docs/26.0.0/ingestion/native-batch"><code>appendToExisting</code></a> is true, or one of your input sources is the same Druid datasource
+that you are ingesting into. In either of these two cases, running the same task twice is non-idempotent, because you
+are adding to existing data instead of overwriting it.</li></ul><p>On the <strong>query side</strong>, the Druid Broker is responsible for ensuring that a consistent set of segments is involved in a
+given query. It selects the appropriate set of segment versions to use when the query starts based on what is currently
+available. This is supported by <em>atomic replacement</em>, a feature that ensures that from a user's perspective, queries
+flip instantaneously from an older version of data to a newer set of data, with no consistency or performance impact.
+(See <a href="#segment-versioning">segment versioning</a> above.)
+This is used for Hadoop-based batch ingestion, native batch ingestion when <code>appendToExisting</code> is false, and compaction.</p><p>Note that atomic replacement happens for each time chunk individually. If a batch ingestion task or compaction
+involves multiple time chunks, then each time chunk will undergo atomic replacement soon after the task finishes, but
+the replacements will not all happen simultaneously.</p><p>Typically, atomic replacement in Druid is based on a <em>core set</em> concept that works in conjunction with segment versions.
+When a time chunk is overwritten, a new core set of segments is created with a higher version number. The core set
+must <em>all</em> be available before the Broker will use them instead of the older set. There can also only be one core set
+per version per time chunk. Druid will also only use a single version at a time per time chunk. Together, these
+properties provide Druid's atomic replacement guarantees.</p><p>Druid also supports an experimental <em>segment locking</em> mode that is activated by setting
+<a href="/docs/26.0.0/ingestion/tasks#context"><code>forceTimeChunkLock</code></a> to false in the context of an ingestion task. In this case, Druid
+creates an <em>atomic update group</em> using the existing version for the time chunk, instead of creating a new core set
+with a new version number. There can be multiple atomic update groups with the same version number per time chunk. Each
+one replaces a specific set of earlier segments in the same time chunk and with the same version number. Druid will
+query the latest one that is fully available. This is a more powerful version of the core set concept, because it
+enables atomically replacing a subset of data for a time chunk, as well as doing atomic replacement and appending
+simultaneously.</p><p>If segments become unavailable due to multiple Historicals going offline simultaneously (beyond your replication
+factor), then Druid queries will include only the segments that are still available. In the background, Druid will
+reload these unavailable segments on other Historicals as quickly as possible, at which point they will be included in
+queries again.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="query-processing">Query processing<a href="#query-processing" class="hash-link" aria-label="Direct link to Query processing" title="Direct link to Query processing"></a></h2><p>Queries are distributed across the Druid cluster, and managed by a Broker.
+Queries first enter the <a href="/docs/26.0.0/design/broker">Broker</a>, which identifies the segments with data that may pertain to that query.
+The list of segments is always pruned by time, and may also be pruned by other attributes depending on how your
+datasource is partitioned. The Broker will then identify which <a href="/docs/26.0.0/design/historical">Historicals</a> and
+<a href="/docs/26.0.0/design/middlemanager">MiddleManagers</a> are serving those segments and distributes a rewritten subquery to each of those processes.
+The Historical/MiddleManager processes execute each subquery and return results to the Broker. The Broker merges the partial results
+to get the final answer, which it returns to the original caller.</p><p>Time and attribute pruning is an important way that Druid limits the amount of data that must be scanned for each query, but it is
+not the only way. For filters at a more granular level than what the Broker can use for pruning,
+<a href="#datasources-and-segments">indexing structures</a>
+inside each segment allow Historicals to figure out which (if any) rows match the filter set before looking at any row of
+data. Once a Historical knows which rows match a particular query, it only accesses the specific rows and columns it needs for that
+query.</p><p>So Druid uses three different techniques to maximize query performance:</p><ul><li>Pruning the set of segments accessed for a query.</li><li>Within each segment, using indexes to identify which rows must be accessed.</li><li>Within each segment, only reading the specific rows and columns that are relevant to a particular query.</li></ul><p>For more details about how Druid executes queries, refer to the <a href="/docs/26.0.0/querying/query-execution">Query execution</a>
+documentation.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/tutorials/tutorial-jdbc"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">JDBC connector</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/design/segments"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__labe [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/auth.html/index.html b/docs/26.0.0/design/auth.html/index.html
new file mode 100644
index 000000000..16d7c7be5
--- /dev/null
+++ b/docs/26.0.0/design/auth.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/auth">
+ <link rel="canonical" href="/docs/26.0.0/design/auth" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/auth' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/auth/index.html b/docs/26.0.0/design/auth/index.html
new file mode 100644
index 000000000..4209e5551
--- /dev/null
+++ b/docs/26.0.0/design/auth/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/auth">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Authentication and Authorization | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+the Anonymous Authenticator should be added to the end of the authenticator chain. A request that reaches the Anonymous Authenticator at the end of the chain will succeed or fail depending on how the Authorizer linked to the Anonymous Authenticator is configured.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.auth.authenticator.<authenticatorName>.authorizerName</code></td><td>Authorizer that reques [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/broker.html/index.html b/docs/26.0.0/design/broker.html/index.html
new file mode 100644
index 000000000..f98b9904d
--- /dev/null
+++ b/docs/26.0.0/design/broker.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/broker">
+ <link rel="canonical" href="/docs/26.0.0/design/broker" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/broker' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/broker/index.html b/docs/26.0.0/design/broker/index.html
new file mode 100644
index 000000000..33e9a6471
--- /dev/null
+++ b/docs/26.0.0/design/broker/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/broker">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Broker | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/design/broker [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+On start up, Historical processes announce themselves and the segments they are serving in Zookeeper.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h3><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text code [...]
+Historical processes. Once the Historical processes return their results, the Broker will store those results in the cache. Real-time segments are never cached and hence requests for real-time data will always be forwarded to real-time processes. Real-time data is perpetually changing and caching the results would be unreliable.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqd [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/concepts-and-terminology.html/index.html b/docs/26.0.0/design/concepts-and-terminology.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/design/concepts-and-terminology.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/coordinator.html/index.html b/docs/26.0.0/design/coordinator.html/index.html
new file mode 100644
index 000000000..6cac6b032
--- /dev/null
+++ b/docs/26.0.0/design/coordinator.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/coordinator">
+ <link rel="canonical" href="/docs/26.0.0/design/coordinator" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/coordinator' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/coordinator/index.html b/docs/26.0.0/design/coordinator/index.html
new file mode 100644
index 000000000..04e69ed7b
--- /dev/null
+++ b/docs/26.0.0/design/coordinator/index.html
@@ -0,0 +1,61 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/coordinator">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Coordinator Process | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Druid Coordinator process communicates to Historical processes to load or drop segments based on configurations. The
+Druid Coordinator is responsible for loading new segments, dropping outdated segments, ensuring that segments are
+"replicated" (that is, loaded on multiple different Historical nodes) proper (configured) number of times, and moving
+("balancing") segments between Historical nodes to keep the latter evenly loaded.</p><p>The Druid Coordinator runs its duties periodically and the time between each run is a configurable parameter. On each
+run, the Coordinator assesses the current state of the cluster before deciding on the appropriate actions to take.
+Similar to the Broker and Historical processes, the Druid Coordinator maintains a connection to a Zookeeper cluster for
+current cluster information. The Coordinator also maintains a connection to a database containing information about
+"used" segments (that is, the segments that <em>should</em> be loaded in the cluster) and the loading rules.</p><p>Before any unassigned segments are serviced by Historical processes, the Historical processes for each tier are first
+sorted in terms of capacity, with least capacity servers having the highest priority. Unassigned segments are always
+assigned to the processes with least capacity to maintain a level of balance between processes. The Coordinator does not
+directly communicate with a historical process when assigning it a new segment; instead the Coordinator creates some
+temporary information about the new segment under load queue path of the historical process. Once this request is seen,
+the historical process will load the segment and begin servicing it.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h3><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code [...]
+Historical nodes in the cluster. Coordinator sends requests to Historical nodes to unload unused segments or segments
+that are removed from the database.</p><p>Segments that are overshadowed (their versions are too old and their data has been replaced by newer segments) are
+marked as unused. During the next Coordinator's run, they will be unloaded from Historical nodes in the cluster.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-availability">Segment availability<a href="#segment-availability" class="hash-link" aria-label="Direct link to Segment availability" title="Direct link to Segment availability"></a></h3><p>If a Historical process restarts or becomes unavailable for any reason, the Druid Coordinator will notice a process has go [...]
+Each run, the Coordinator compacts segments by merging small segments or splitting a large one. This is useful when the size of your segments is not optimized which may degrade query performance.
+See <a href="/docs/26.0.0/operations/segment-optimization">Segment size optimization</a> for details.</p><p>The Coordinator first finds the segments to compact based on the <a href="#segment-search-policy-in-automatic-compaction">segment search policy</a>.
+Once some segments are found, it issues a <a href="/docs/26.0.0/ingestion/tasks#compact">compaction task</a> to compact those segments.
+The maximum number of running compaction tasks is <code>min(sum of worker capacity * slotRatio, maxSlots)</code>.
+Note that even if <code>min(sum of worker capacity * slotRatio, maxSlots) = 0</code>, at least one compaction task is always submitted
+if the compaction is enabled for a dataSource.
+See <a href="/docs/26.0.0/operations/api-reference#automatic-compaction-configuration">Automatic compaction configuration API</a> and <a href="/docs/26.0.0/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction configuration</a> to enable and configure automatic compaction.</p><p>Compaction tasks might fail due to the following reasons:</p><ul><li>If the input segments of a compaction task are removed or overshadowed before it starts, that compaction task fails i [...]
+need compaction.
+A set of segments needs compaction if all conditions below are satisfied:</p><p>1) Total size of segments in the time chunk is smaller than or equal to the configured <code>inputSegmentSizeBytes</code>.
+2) Segments have never been compacted yet or compaction spec has been updated since the last compaction: <code>maxTotalRows</code> or <code>indexSpec</code>.</p><p>Here are some details with an example. Suppose we have two dataSources (<code>foo</code>, <code>bar</code>) as seen below:</p><ul><li><code>foo</code><ul><li><code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION</code></li><li><code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION_1</code></li><li><c [...]
+<code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION</code> and <code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION_1</code> to compact together because
+<code>2017-11-01T00:00:00.000Z/2017-12-01T00:00:00.000Z</code> is the most recent time chunk.</p><p>If the Coordinator has enough task slots for compaction, this policy will continue searching for the next segments and return
+<code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code> and <code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION_1</code>.
+Finally, <code>foo_2017-09-01T00:00:00.000Z_2017-10-01T00:00:00.000Z_VERSION</code> will be picked up even though there is only one segment in the time chunk of <code>2017-09-01T00:00:00.000Z/2017-10-01T00:00:00.000Z</code>.</p><p>The search start point can be changed by setting <code>skipOffsetFromLatest</code>.
+If this is set, this policy will ignore the segments falling into the time chunk of (the end time of the most recent segment - <code>skipOffsetFromLatest</code>).
+This is to avoid conflicts between compaction tasks and realtime tasks.
+Note that realtime tasks have a higher priority than compaction tasks by default. Realtime tasks will revoke the locks of compaction tasks if their intervals overlap, resulting in the termination of the compaction task.
+For more information, see <a href="/docs/26.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p><blockquote><p>This policy currently cannot handle the situation when there are a lot of small segments which have the same interval,
+and their total size exceeds <a href="/docs/26.0.0/configuration/#automatic-compaction-dynamic-configuration"><code>inputSegmentSizeBytes</code></a>.
+If it finds such segments, it simply skips them.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="faq">FAQ<a href="#faq" class="hash-link" aria-label="Direct link to FAQ" title="Direct link to FAQ"></a></h3><ol><li><p><strong>Do clients ever contact the Coordinator process?</strong></p><p>The Coordinator is not involved in a query.</p><p>Historical processes never directly contact the Coordinator process. The Druid Coordinator tells the Historical processes to load/dro [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/design.html/index.html b/docs/26.0.0/design/design.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/design/design.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/extensions-contrib/dropwizard.html/index.html b/docs/26.0.0/design/extensions-contrib/dropwizard.html/index.html
new file mode 100644
index 000000000..bd2e06272
--- /dev/null
+++ b/docs/26.0.0/design/extensions-contrib/dropwizard.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/extensions-contrib/dropwizard">
+ <link rel="canonical" href="/docs/26.0.0/design/extensions-contrib/dropwizard" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/extensions-contrib/dropwizard' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/extensions-contrib/dropwizard/index.html b/docs/26.0.0/design/extensions-contrib/dropwizard/index.html
new file mode 100644
index 000000000..9619e5754
--- /dev/null
+++ b/docs/26.0.0/design/extensions-contrib/dropwizard/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/extensions-contrib/dropwizard">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Dropwizard metrics emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+It accumulates druid metrics as dropwizard metrics, and emits them to various sinks via dropwizard supported reporters.
+Currently supported dropwizard metrics types counter, gauge, meter, timer and histogram.
+These metrics can be emitted using either Console or JMX reporter. </p><p>To use this emitter, set</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.emitter=dropwizard</span><br></span></code>< [...]
+be provided as a JSON file. Additionally, this mapping specifies which dimensions should be included for each metric.
+If the user does not specify their own JSON file, a <a href="#default-metrics-mapping">default mapping</a> is used.
+All metrics are expected to be mapped. Metrics which are not mapped will be ignored.
+Dropwizard metric path is organized using the following schema:</p><p><code><druid metric name> : { "dimensions" : <dimension list>, "type" : <Dropwizard metric type>, "timeUnit" : <For timers, timeunit in which metric is emitted>}</code></p><p>e.g.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" c [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/historical.html/index.html b/docs/26.0.0/design/historical.html/index.html
new file mode 100644
index 000000000..2c5a5a76b
--- /dev/null
+++ b/docs/26.0.0/design/historical.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/historical">
+ <link rel="canonical" href="/docs/26.0.0/design/historical" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/historical' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/historical/index.html b/docs/26.0.0/design/historical/index.html
new file mode 100644
index 000000000..de7c469e0
--- /dev/null
+++ b/docs/26.0.0/design/historical/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/historical">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Historical Process | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/d [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/index.html b/docs/26.0.0/design/index.html
new file mode 100644
index 000000000..e894b1571
--- /dev/null
+++ b/docs/26.0.0/design/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/index">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Introduction to Apache Druid | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/doc [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Druid's key features are:</p><ol><li><strong>Columnar storage format.</strong> Druid uses column-oriented storage. This means it only loads the exact columns
+needed for a particular query. This greatly improves speed for queries that retrieve only a few columns. Additionally, to support fast scans and aggregations, Druid optimizes column storage for each column according to its data type.</li><li><strong>Scalable distributed system.</strong> Typical Druid deployments span clusters ranging from tens to hundreds of servers. Druid can ingest data at the rate of millions of records per second while retaining trillions of records and maintaining [...]
+querying.</li><li><strong>Self-healing, self-balancing, easy to operate.</strong> As an operator, you add servers to scale out or
+remove servers to scale down. The Druid cluster re-balances itself automatically in the background without any downtime. If a
+Druid server fails, the system automatically routes data around the damage until the server can be replaced. Druid
+is designed to run continuously without planned downtime for any reason. This is true for configuration changes and software
+updates.</li><li><strong>Cloud-native, fault-tolerant architecture that won't lose data.</strong> After ingestion, Druid safely stores a copy of your data in <a href="/docs/26.0.0/design/architecture#deep-storage">deep storage</a>. Deep storage is typically cloud storage, HDFS, or a shared filesystem. You can recover your data from deep storage even in the unlikely case that all Druid servers fail. For a limited failure that affects only a few Druid servers, replication ensures that [...]
+<a href="https://arxiv.org/pdf/1004.0403" target="_blank" rel="noopener noreferrer">CONCISE</a> compressed bitmap indexes to create indexes to enable fast filtering and searching across multiple columns.</li><li><strong>Time-based partitioning.</strong> Druid first partitions data by time. You can optionally implement additional partitioning based upon other fields.
+Time-based queries only access the partitions that match the time range of the query which leads to significant performance improvements.</li><li><strong>Approximate algorithms.</strong> Druid includes algorithms for approximate count-distinct, approximate ranking, and
+computation of approximate histograms and quantiles. These algorithms offer bounded memory usage and are often
+substantially faster than exact computations. For situations where accuracy is more important than speed, Druid also
+offers exact count-distinct and exact ranking.</li><li><strong>Automatic summarization at ingest time.</strong> Druid optionally supports data summarization at ingestion time. This
+summarization partially pre-aggregates your data, potentially leading to significant cost savings and performance boosts.</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="when-to-use-druid">When to use Druid<a href="#when-to-use-druid" class="hash-link" aria-label="Direct link to When to use Druid" title="Direct link to When to use Druid"></a></h2><p>Druid is used by many companies of various sizes for many different use cases. For more information see
+<a href="/druid-powered">Powered by Apache Druid</a>.</p><p>Druid is likely a good choice if your use case matches a few of the following:</p><ul><li>Insert rates are very high, but updates are less common.</li><li>Most of your queries are aggregation and reporting queries. For example "group by" queries. You may also have searching and
+scanning queries.</li><li>You are targeting query latencies of 100ms to a few seconds.</li><li>Your data has a time component. Druid includes optimizations and design choices specifically related to time.</li><li>You may have more than one table, but each query hits just one big distributed table. Queries may potentially hit more
+than one smaller "lookup" table.</li><li>You have high cardinality data columns, e.g. URLs, user IDs, and need fast counting and ranking over them.</li><li>You want to load data from Kafka, HDFS, flat files, or object storage like Amazon S3.</li></ul><p>Situations where you would likely <em>not</em> want to use Druid include:</p><ul><li>You need low-latency updates of <em>existing</em> records using a primary key. Druid supports streaming inserts, but not streaming updates. You [...]
+background batch jobs.</li><li>You are building an offline reporting system where query latency is not very important.</li><li>You want to do "big" joins, meaning joining one big fact table to another big fact table, and you are okay with these queries
+taking a long time to complete.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2><ul><li>Try the Druid <a href="/docs/26.0.0/tutorials/">Quickstart</a>.</li><li>Learn more about Druid components in <a href="/docs/26.0.0/design/architecture">Design</a>.</li><li>Read about new features and other details of <a href="https://github.com/ap [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/indexer.html/index.html b/docs/26.0.0/design/indexer.html/index.html
new file mode 100644
index 000000000..8e4899737
--- /dev/null
+++ b/docs/26.0.0/design/indexer.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/indexer">
+ <link rel="canonical" href="/docs/26.0.0/design/indexer" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/indexer' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/indexer/index.html b/docs/26.0.0/design/indexer/index.html
new file mode 100644
index 000000000..183982d5e
--- /dev/null
+++ b/docs/26.0.0/design/indexer/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/indexer">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Indexer Process | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/desi [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Its memory management system is still under development and will be significantly enhanced in later releases. </p></blockquote><p>The Apache Druid Indexer process is an alternative to the MiddleManager + Peon task execution system. Instead of forking a separate JVM process per-task, the Indexer runs tasks as separate threads within a single JVM process.</p><p>The Indexer is designed to be easier to configure and deploy compared to the MiddleManager + Peon system and to better enable reso [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/indexing-service.html/index.html b/docs/26.0.0/design/indexing-service.html/index.html
new file mode 100644
index 000000000..4611487c9
--- /dev/null
+++ b/docs/26.0.0/design/indexing-service.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/indexing-service">
+ <link rel="canonical" href="/docs/26.0.0/design/indexing-service" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/indexing-service' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/indexing-service/index.html b/docs/26.0.0/design/indexing-service/index.html
new file mode 100644
index 000000000..cab8286ff
--- /dev/null
+++ b/docs/26.0.0/design/indexing-service/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/indexing-service">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Indexing Service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/des [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Overlords and MiddleManagers may run on the same process or across multiple processes while MiddleManagers and Peons always run on the same process.</p><p>Tasks are managed using API endpoints on the Overlord service. Please see <a href="/docs/26.0.0/operations/api-reference#tasks">Overlord Task API</a> for more information.</p><p><img loading="lazy" alt="Indexing Service" src="/assets/images/indexing_service-e985270b9e0e342af71c0673407e5673.png" title="Indexing Service" width="532" heig [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/middlemanager.html/index.html b/docs/26.0.0/design/middlemanager.html/index.html
new file mode 100644
index 000000000..2000c8420
--- /dev/null
+++ b/docs/26.0.0/design/middlemanager.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/middlemanager">
+ <link rel="canonical" href="/docs/26.0.0/design/middlemanager" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/middlemanager' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/middlemanager/index.html b/docs/26.0.0/design/middlemanager/index.html
new file mode 100644
index 000000000..a21898e4a
--- /dev/null
+++ b/docs/26.0.0/design/middlemanager/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/middlemanager">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">MiddleManager Process | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The reason we have separate JVMs for tasks is for resource and log isolation. Each <a href="/docs/26.0.0/design/peons">Peon</a> is capable of running only one task at a time, however, a MiddleManager may have multiple Peons.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h3><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5; [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/overlord.html/index.html b/docs/26.0.0/design/overlord.html/index.html
new file mode 100644
index 000000000..00ae6c96b
--- /dev/null
+++ b/docs/26.0.0/design/overlord.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/overlord">
+ <link rel="canonical" href="/docs/26.0.0/design/overlord" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/overlord' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/overlord/index.html b/docs/26.0.0/design/overlord/index.html
new file mode 100644
index 000000000..c0bcb8ef4
--- /dev/null
+++ b/docs/26.0.0/design/overlord/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/overlord">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Overlord Process | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/des [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+In local mode Overlord is also responsible for creating Peons for executing tasks. When running the Overlord in local mode, all MiddleManager and Peon configurations must be provided as well.
+Local mode is typically used for simple workflows. In remote mode, the Overlord and MiddleManager are run in separate processes and you can run each on a different server.
+This mode is recommended if you intend to use the indexing service as the single endpoint for all Druid indexing.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="blacklisted-workers">Blacklisted workers<a href="#blacklisted-workers" class="hash-link" aria-label="Direct link to Blacklisted workers" title="Direct link to Blacklisted workers"></a></h3><p>If a MiddleManager has task failures above a threshold, the Overlord will blacklist these MiddleManagers. No more than 20% of the M [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/peons.html/index.html b/docs/26.0.0/design/peons.html/index.html
new file mode 100644
index 000000000..0e4a47962
--- /dev/null
+++ b/docs/26.0.0/design/peons.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/peons">
+ <link rel="canonical" href="/docs/26.0.0/design/peons" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/peons' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/peons/index.html b/docs/26.0.0/design/peons/index.html
new file mode 100644
index 000000000..321af1f5e
--- /dev/null
+++ b/docs/26.0.0/design/peons/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/peons">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Peons | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/design/peons"> [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Peons should rarely (if ever for testing purposes) be run on their own.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h3><p>The Peon should very rarely ever be run independent of the MiddleManager unless for development purposes.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div cl [...]
+The status file indicates where the task status will be output.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#configuration" class="table-of-contents__link toc-highlight">Configuration</a></li><li><a href="#http-endpoints" class="table-of-contents__link toc-high [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/plumber.html/index.html b/docs/26.0.0/design/plumber.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/design/plumber.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/processes.html/index.html b/docs/26.0.0/design/processes.html/index.html
new file mode 100644
index 000000000..b66b58b35
--- /dev/null
+++ b/docs/26.0.0/design/processes.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/processes">
+ <link rel="canonical" href="/docs/26.0.0/design/processes" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/processes' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/processes/index.html b/docs/26.0.0/design/processes/index.html
new file mode 100644
index 000000000..da957daa4
--- /dev/null
+++ b/docs/26.0.0/design/processes/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/processes">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Processes and servers | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+caller. End users typically query Brokers rather than querying Historicals or MiddleManagers processes on Data servers directly.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="router-process-optional">Router process (optional)<a href="#router-process-optional" class="hash-link" aria-label="Direct link to Router process (optional)" title="Direct link to Router process (optional)"></a></h4><p><a href="/docs/26.0.0/design/router"><strong>Router</strong></a> processes are <em>optiona [...]
+Overlords, and Coordinators. They are optional since you can also simply contact the Druid Brokers, Overlords, and
+Coordinators directly.</p><p>The Router also runs the <a href="/docs/26.0.0/operations/web-console">web console</a>, a management UI for datasources, segments, tasks, data processes (Historicals and MiddleManagers), and coordinator dynamic configuration. The user can also run SQL and native Druid queries within the console.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-server">Data server<a href="#data-server" class="hash-link" aria-label="Direct link to Data server" title=" [...]
+(including any streaming data that has been in the system long enough to be committed). Historical processes
+download segments from deep storage and respond to queries about these segments. They don't accept writes.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="middle-manager-process">Middle Manager process<a href="#middle-manager-process" class="hash-link" aria-label="Direct link to Middle Manager process" title="Direct link to Middle Manager process"></a></h3><p><a href="/docs/26.0.0/design/middlemanager"><strong>MiddleManager</strong></a> processes handle ingestion of new data [...]
+for reading from external data sources and publishing new Druid segments.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="peon-processes">Peon processes<a href="#peon-processes" class="hash-link" aria-label="Direct link to Peon processes" title="Direct link to Peon processes"></a></h4><p><a href="/docs/26.0.0/design/peons"><strong>Peon</strong></a> processes are task execution engines spawned by MiddleManagers. Each Peon runs a separate JVM and is responsible for executing a singl [...]
+forking separate JVM processes per-task, the Indexer runs tasks as individual threads within a single JVM process.</p><p>The Indexer is designed to be easier to configure and deploy compared to the MiddleManager + Peon system and to
+better enable resource sharing across tasks. The Indexer is a newer feature and is currently designated
+<a href="/docs/26.0.0/development/experimental">experimental</a> due to the fact that its memory management system is still under
+development. It will continue to mature in future versions of Druid.</p><p>Typically, you would deploy either MiddleManagers or Indexers, but not both.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="pros-and-cons-of-colocation">Pros and cons of colocation<a href="#pros-and-cons-of-colocation" class="hash-link" aria-label="Direct link to Pros and cons of colocation" title="Direct link to Pros and cons of colocation"></a></h2><p>Druid processes can be colocated based on the Master/ [...]
+described above. This organization generally results in better utilization of
+hardware resources for most clusters.</p><p>For very large scale clusters, however, it can be desirable to split the Druid processes
+such that they run on individual servers to avoid resource contention.</p><p>This section describes guidelines and configuration parameters related to process colocation.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="coordinators-and-overlords">Coordinators and Overlords<a href="#coordinators-and-overlords" class="hash-link" aria-label="Direct link to Coordinators and Overlords" title="Direct link to Coordinators and Overlords"></a></h3><p>The workload on the Coordinator process [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/realtime.html/index.html b/docs/26.0.0/design/realtime.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/design/realtime.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/router.html/index.html b/docs/26.0.0/design/router.html/index.html
new file mode 100644
index 000000000..757da0ab6
--- /dev/null
+++ b/docs/26.0.0/design/router.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/router">
+ <link rel="canonical" href="/docs/26.0.0/design/router" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/router' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/router/index.html b/docs/26.0.0/design/router/index.html
new file mode 100644
index 000000000..d336ded96
--- /dev/null
+++ b/docs/26.0.0/design/router/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/router">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Router Process | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/desig [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+setting up a highly available cluster in situations where the HTTP redirect mechanism of the inactive -> active
+Coordinator/Overlord does not function correctly (servers are behind a load balancer, the hostname used in the redirect
+is only resolvable internally, etc.).</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enabling-the-management-proxy">Enabling the management proxy<a href="#enabling-the-management-proxy" class="hash-link" aria-label="Direct link to Enabling the management proxy" title="Direct link to Enabling the management proxy"></a></h4><p>To enable this functionality, set the following in the Router's runtime.properties:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--pr [...]
+determined from the original request path based on Druid API path conventions. For the Coordinator the convention is
+<code>/druid/coordinator/*</code> and for the Overlord the convention is <code>/druid/indexer/*</code>. These are convenient because they mean
+that using the management proxy does not require modifying the API request other than issuing the request to the Router
+instead of the Coordinator or Overlord. Most Druid API requests can be routed implicitly.</p><p>Explicit routes are those where the request to the Router contains a path prefix indicating which process the request
+should be routed to. For the Coordinator this prefix is <code>/proxy/coordinator</code> and for the Overlord it is <code>/proxy/overlord</code>.
+This is required for API calls with an ambiguous destination. For example, the <code>/status</code> API is present on all Druid
+processes, so explicit routing needs to be used to indicate the proxy destination.</p><p>This is summarized in the table below:</p><table><thead><tr><th>Request Route</th><th>Destination</th><th>Rewritten Route</th><th>Example</th></tr></thead><tbody><tr><td><code>/druid/coordinator/*</code></td><td>Coordinator</td><td><code>/druid/coordinator/*</code></td><td><code>router:8888/druid/coordinator/v1/datasources</code> -> <code>coordinator:8081/druid/coordinator/v1/datasources</code></t [...]
+This strategy can route both Native and SQL queries (when enabled).</p><p><em>Example</em>: A strategy that routes queries to the Broker "druid:broker-hot" if no valid <code>brokerService</code> is found in the query context.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code [...]
+given SQL query is resolved using only the provided Router strategies. If not resolved using any of the strategies, the
+Router uses the <code>defaultBrokerServiceName</code>. This behavior is slightly different from native queries where the Router
+first tries to resolve the broker service using strategies, then load rules and finally using the <code>defaultBrokerServiceName</code>
+if still not resolved. When <code>druid.router.sql.enable</code> is set to <code>false</code> (default value), the Router uses the
+<code>defaultBrokerServiceName</code>.</p><p>Setting <code>druid.router.sql.enable</code> does not affect either Avatica JDBC requests or native queries.
+Druid always routes native queries using the strategies and load rules as documented.
+Druid always routes Avatica JDBC requests based on connection ID.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="avatica-query-balancing">Avatica query balancing<a href="#avatica-query-balancing" class="hash-link" aria-label="Direct link to Avatica query balancing" title="Direct link to Avatica query balancing"></a></h3><p>All Avatica JDBC requests with a given connection ID must be routed to the same Broker, since Druid Brokers do not share connection state with each other.</p>< [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/segments.html/index.html b/docs/26.0.0/design/segments.html/index.html
new file mode 100644
index 000000000..647224944
--- /dev/null
+++ b/docs/26.0.0/design/segments.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/segments">
+ <link rel="canonical" href="/docs/26.0.0/design/segments" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/segments' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/design/segments/index.html b/docs/26.0.0/design/segments/index.html
new file mode 100644
index 000000000..21e68555c
--- /dev/null
+++ b/docs/26.0.0/design/segments/index.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/segments">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Segments | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/design/segm [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+file size to be within the recommended range of 300-700 MB. If your
+segment files are larger than this range, then consider either
+changing the granularity of the segment time interval or partitioning your
+data and/or adjusting the <code>targetRowsPerSegment</code> in your <code>partitionsSpec</code>.
+A good starting point for this parameter is 5 million rows.
+See the Sharding section below and the "Partitioning specification" section of
+the <a href="/docs/26.0.0/ingestion/hadoop#partitionsspec">Batch ingestion</a> documentation
+for more guidance.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-file-structure">Segment file structure<a href="#segment-file-structure" class="hash-link" aria-label="Direct link to Segment file structure" title="Direct link to Segment file structure"></a></h2><p>Segment files are <em>columnar</em>: the data for each column is laid out in
+separate data structures. By storing each column separately, Druid decreases query latency by scanning only those columns actually needed for a query. There are three basic column types: timestamp, dimensions, and metrics:</p><p><img loading="lazy" alt="Druid column types" src="/assets/images/druid-column-types-0cd9a011b4cc2b4d05f93b3b31a7e735.png" title="Druid Column Types" width="1936" height="400" class="img_ev3q"></p><p>Timestamp and metrics type columns are arrays of integer or floa [...]
+<a href="https://github.com/lz4/lz4-java" target="_blank" rel="noopener noreferrer">LZ4</a>. Once a query identifies which rows to select, it decompresses them, pulls out the relevant rows, and applies the
+desired aggregation operator. If a query doesn’t require a column, Druid skips over that column's data.</p><p>Dimension columns are different because they support filter and
+group-by operations, so each dimension requires the following
+three data structures:</p><ul><li><strong>Dictionary</strong>: Maps values (which are always treated as strings) to integer IDs, allowing compact representation of the list and bitmap values.</li><li><strong>List</strong>: The column’s values, encoded using the dictionary. Required for GroupBy and TopN queries. These operators allow queries that solely aggregate metrics based on filters to run without accessing the list of values.</li><li><strong>Bitmap</strong>: One bitmap for each dist [...]
+bitmap. If a row has more than one value for a column, its entry in
+the list is an array of values. Additionally, a row with <em>n</em> values in the list has <em>n</em> non-zero valued entries in bitmaps.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="compression">Compression<a href="#compression" class="hash-link" aria-label="Direct link to Compression" title="Direct link to Compression"></a></h2><p>Druid uses LZ4 by default to compress blocks of values for string, long, float, and double columns. Druid uses Roaring to compress bitmaps for stri [...]
+Smoosh files contain the following: </p><ul><li>Individual files for each column in the data, including one for the <code>__time</code> column that refers to the timestamp of the segment. </li><li>An <code>index.drd</code> file that contains additional segment metadata.</li></ul></li></ul><p>In the codebase, segments have an internal format version. The current segment format version is <code>v9</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="implications-of-updating-segmen [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/approximate-histograms.html/index.html b/docs/26.0.0/development/approximate-histograms.html/index.html
new file mode 100644
index 000000000..0f1c4ea6c
--- /dev/null
+++ b/docs/26.0.0/development/approximate-histograms.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/approximate-histograms">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/approximate-histograms" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/approximate-histograms' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/build.html/index.html b/docs/26.0.0/development/build.html/index.html
new file mode 100644
index 000000000..6924d1c40
--- /dev/null
+++ b/docs/26.0.0/development/build.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/build">
+ <link rel="canonical" href="/docs/26.0.0/development/build" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/build' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/build/index.html b/docs/26.0.0/development/build/index.html
new file mode 100644
index 000000000..de1a5c514
--- /dev/null
+++ b/docs/26.0.0/development/build/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/build">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Build from source | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/de [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+that matches the version you want to build.
+For building the latest code in master, follow the latest version of this page
+<a href="https://github.com/apache/druid/blob/master/docs/development/build.md" target="_blank" rel="noopener noreferrer">here</a>:
+make sure it has <code>/master/</code> in the URL.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="installing-java-and-maven">Installing Java and Maven<a href="#installing-java-and-maven" class="hash-link" aria-label="Direct link to Installing Java and Maven" title="Direct l [...]
+main <a href="https://github.com/apache/druid/blob/master/pom.xml" target="_blank" rel="noopener noreferrer">pom</a>. To build druid with hadoop 3.x.x jars, hadoop3 profile
+needs to be activated.</p><p>To generate build with hadoop 3 dependencies, run:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">mvn clean </span><span class="token function" style="co [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/community-extensions/azure.html/index.html b/docs/26.0.0/development/community-extensions/azure.html/index.html
new file mode 100644
index 000000000..46dafda28
--- /dev/null
+++ b/docs/26.0.0/development/community-extensions/azure.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/azure">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/azure" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/azure' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/community-extensions/cassandra.html/index.html b/docs/26.0.0/development/community-extensions/cassandra.html/index.html
new file mode 100644
index 000000000..400b96419
--- /dev/null
+++ b/docs/26.0.0/development/community-extensions/cassandra.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/cassandra">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/cassandra" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/cassandra' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/community-extensions/cloudfiles.html/index.html b/docs/26.0.0/development/community-extensions/cloudfiles.html/index.html
new file mode 100644
index 000000000..e9f699211
--- /dev/null
+++ b/docs/26.0.0/development/community-extensions/cloudfiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/cloudfiles">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/cloudfiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/cloudfiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/community-extensions/graphite.html/index.html b/docs/26.0.0/development/community-extensions/graphite.html/index.html
new file mode 100644
index 000000000..0acfb2467
--- /dev/null
+++ b/docs/26.0.0/development/community-extensions/graphite.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/graphite">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/graphite" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/graphite' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/community-extensions/kafka-simple.html/index.html b/docs/26.0.0/development/community-extensions/kafka-simple.html/index.html
new file mode 100644
index 000000000..91f91ffaa
--- /dev/null
+++ b/docs/26.0.0/development/community-extensions/kafka-simple.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kafka-ingestion">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kafka-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kafka-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/community-extensions/rabbitmq.html/index.html b/docs/26.0.0/development/community-extensions/rabbitmq.html/index.html
new file mode 100644
index 000000000..91f91ffaa
--- /dev/null
+++ b/docs/26.0.0/development/community-extensions/rabbitmq.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kafka-ingestion">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kafka-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kafka-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/experimental-features.html/index.html b/docs/26.0.0/development/experimental-features.html/index.html
new file mode 100644
index 000000000..9c06b4c1f
--- /dev/null
+++ b/docs/26.0.0/development/experimental-features.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/experimental-features">
+ <link rel="canonical" href="/docs/26.0.0/development/experimental-features" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/experimental-features' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/experimental-features/index.html b/docs/26.0.0/development/experimental-features/index.html
new file mode 100644
index 000000000..7bd1d1dc2
--- /dev/null
+++ b/docs/26.0.0/development/experimental-features/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/experimental-features">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Experimental features | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/experimental.html/index.html b/docs/26.0.0/development/experimental.html/index.html
new file mode 100644
index 000000000..4d79f99cd
--- /dev/null
+++ b/docs/26.0.0/development/experimental.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/experimental">
+ <link rel="canonical" href="/docs/26.0.0/development/experimental" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/experimental' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/experimental/index.html b/docs/26.0.0/development/experimental/index.html
new file mode 100644
index 000000000..536ce2119
--- /dev/null
+++ b/docs/26.0.0/development/experimental/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/experimental">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Experimental features | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This can mean any of the following things:</p><ol><li>The feature's API may change even in minor releases or patch releases.</li><li>The feature may have known "missing" pieces that will be added later.</li><li>The feature may or may not have received full battle-testing in production environments.</li></ol><p>All experimental features are optional.</p><p>Note that not all of these points apply to every experimental feature. Some have been battle-tested in terms of
+implementation, but are still marked experimental due to an evolving API. Please check the documentation for each
+feature for full details.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/development/versioning"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Versioning</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/misc/papers-and-talks"><div class="pagination-nav__sublabel">Next</div><div class="paginati [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/aliyun-oss.html/index.html b/docs/26.0.0/development/extensions-contrib/aliyun-oss.html/index.html
new file mode 100644
index 000000000..9b06e7047
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/aliyun-oss.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/aliyun-oss">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/aliyun-oss" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/aliyun-oss' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/aliyun-oss/index.html b/docs/26.0.0/development/extensions-contrib/aliyun-oss/index.html
new file mode 100644
index 000000000..4add1b312
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/aliyun-oss/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/aliyun-oss">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Aliyun OSS | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/developme [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This document describes how to use OSS as Druid deep storage.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="installation">Installation<a href="#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation"></a></h2><p>Use the <a href="/docs/26.0.0/operations/pull-deps">pull-deps</a> tool shipped with Druid to install the <code>aliyun-oss-extensions</code> extension, as described <a href="/docs/26.0.0/development/extensions#community [...]
+To do this, add following configurations:</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.indexer.logs.type</code></td><td>Global deep storage provider. Must be set to <code>oss</code> to make use of this extension.</td><td>yes</td></tr><tr><td><code>druid.indexer.logs.oss.bucket</code></td><td>The bucket used to keep logs. It could be the same as <code>druid.storage.oss.bucket</code></td><td>yes</td></tr><tr><td><code>dr [...]
+In this case, the <code>uris</code> property of the OSS's input source can be used for reading, as shown:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(1 [...]
+Please refer to the official <a href="https://www.alibabacloud.com/help/doc-detail/42777.htm" target="_blank" rel="noopener noreferrer">OSS permission troubleshooting document</a> to find a solution.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#installation" cl [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter.html/index.html b/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter.html/index.html
new file mode 100644
index 000000000..0b37f4001
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter/index.html b/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter/index.html
new file mode 100644
index 000000000..0e9ccc8e2
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/ambari-metrics-emitter/index.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/ambari-metrics-emitter">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Ambari Metrics Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+ambari-metrics metric path is organized using the following schema:
+<code><namespacePrefix>.[<druid service name>].[<druid hostname>].<druid metrics dimensions>.<druid metrics name></code>
+Properly naming the metrics is critical to avoid conflicts, confusing data and potentially wrong interpretation later on.</p><p>Example <code>druid.historical.hist-host1:8080.MyDataSourceName.GroupBy.query/time</code>:</p><ul><li><code>druid</code> -> namespace prefix</li><li><code>historical</code> -> service name</li><li><code>hist-host1:8080</code> -> druid hostname</li><li><code>MyDataSourceName</code> -> dimension value</li><li><code>GroupBy</code> -> dimension value< [...]
+The path will be in the form <code><namespacePrefix>.[<druid service name>].[<druid hostname>].<dimensions values ordered by dimension's name>.<metric></code>
+User has control of <code><namespacePrefix>.[<druid service name>].[<druid hostname>].</code></p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-b [...]
+Same as for the <code>all</code> converter user has control of <code><namespacePrefix>.[<druid service name>].[<druid hostname>].</code>
+White-list based converter comes with the following default white list map located under resources in <code>./src/main/resources/defaultWhiteListMap.json</code></p><p>Although user can override the default white list map by supplying a property called <code>mapPath</code>.
+This property is a String containing the path for the file containing <strong>white list map JSON object</strong>.
+For example the following converter will read the map from the file <code>/pathPrefix/fileName.json</code>.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/cassandra.html/index.html b/docs/26.0.0/development/extensions-contrib/cassandra.html/index.html
new file mode 100644
index 000000000..400b96419
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/cassandra.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/cassandra">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/cassandra" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/cassandra' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/cassandra/index.html b/docs/26.0.0/development/extensions-contrib/cassandra/index.html
new file mode 100644
index 000000000..2ffb009bc
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/cassandra/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/cassandra">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Cassandra | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+be leveraged for deep storage. This requires some additional Druid configuration as well as setting up the necessary
+schema within a Cassandra keystore.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div> [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/cloudfiles.html/index.html b/docs/26.0.0/development/extensions-contrib/cloudfiles.html/index.html
new file mode 100644
index 000000000..e9f699211
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/cloudfiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/cloudfiles">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/cloudfiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/cloudfiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/cloudfiles/index.html b/docs/26.0.0/development/extensions-contrib/cloudfiles/index.html
new file mode 100644
index 000000000..c6662b49d
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/cloudfiles/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/cloudfiles">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Rackspace Cloud Files | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p><p>Sample spec:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
+shardSpecs are not specified, and, in this case, caching can be useful. Prefetching is preferred when direct scan of objects is slow.</p><table><thead><tr><th>property</th><th>description</th><th>default</th><th>required?</th></tr></thead><tbody><tr><td>type</td><td>This should be <code>static-cloudfiles</code>.</td><td>N/A</td><td>yes</td></tr><tr><td>blobs</td><td>JSON array of Cloud Files blobs.</td><td>N/A</td><td>yes</td></tr><tr><td>maxCacheCapacityBytes</td><td>Maximum size of the [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/compressed-big-decimal.html/index.html b/docs/26.0.0/development/extensions-contrib/compressed-big-decimal.html/index.html
new file mode 100644
index 000000000..27ace4f3c
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/compressed-big-decimal.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/compressed-big-decimal">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/compressed-big-decimal" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/compressed-big-decimal' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/compressed-big-decimal/index.html b/docs/26.0.0/development/extensions-contrib/compressed-big-decimal/index.html
new file mode 100644
index 000000000..36b26431a
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/compressed-big-decimal/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/compressed-big-decimal">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Compressed Big Decimal | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/distinctcount.html/index.html b/docs/26.0.0/development/extensions-contrib/distinctcount.html/index.html
new file mode 100644
index 000000000..42cd47048
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/distinctcount.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/distinctcount">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/distinctcount" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/distinctcount' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/distinctcount/index.html b/docs/26.0.0/development/extensions-contrib/distinctcount/index.html
new file mode 100644
index 000000000..e497a61c4
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/distinctcount/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/distinctcount">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">DistinctCount Aggregator | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/gce-extensions.html/index.html b/docs/26.0.0/development/extensions-contrib/gce-extensions.html/index.html
new file mode 100644
index 000000000..8d506802d
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/gce-extensions.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/gce-extensions">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/gce-extensions" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/gce-extensions' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/gce-extensions/index.html b/docs/26.0.0/development/extensions-contrib/gce-extensions/index.html
new file mode 100644
index 000000000..75a8e811e
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/gce-extensions/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/gce-extensions">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">GCE Extensions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/devel [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+of GCE (MIG from now on). This choice has been made to ease the configuration of the machines and simplify their
+management.</p><p>For this reason, in order to use this extension, the user must have created</p><ol><li>An instance template with the right machine type and image to bu used to run the MiddleManager</li><li>A MIG that has been configured to use the instance template created in the point above</li></ol><p>Moreover, in order to be able to rescale the machines in the MIG, the Overlord must run with a service account
+guaranteeing the following two scopes from the <a href="https://developers.google.com/identity/protocols/googlescopes#computev1" target="_blank" rel="noopener noreferrer">Compute Engine API</a></p><ul><li><code>https://www.googleapis.com/auth/cloud-platform</code></li><li><code>https://www.googleapis.com/auth/compute</code></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-dynamic-configuration">Overlord Dynamic Configuration<a href="#overlord-dynamic-configuration" cl [...]
+the <code>maxNumWorkers</code> and <code>minNumWorkers</code> used to define the boundaries in between which the
+number of instances must be at any time.</p><p>The internal level is the <code>envConfig</code> and it is used to specify</p><ul><li>The <code>numInstances</code> used to specify how many workers will be spawned at each
+request to provision more workers. This is safe to be left to <code>1</code></li><li>The <code>projectId</code> used to specify the name of the project in which the MIG resides</li><li>The <code>zoneName</code> used to identify in which zone of the worlds the MIG is</li><li>The <code>managedInstanceGroupName</code> used to specify the MIG containing the instances created or
+removed</li></ul><p>Please refer to the Overlord Dynamic Configuration section in the main <a href="/docs/26.0.0/configuration/">documentation</a>
+for parameters other than the ones specified here, such as <code>selectStrategy</code> etc.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="known-limitations">Known limitations<a href="#known-limitations" class="hash-link" aria-label="Direct link to Known limitations" title="Direct link to Known limitations"></a></h2><ul><li>The module internally uses the <a href="https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/listManagedInstances" target="_blank" re [...]
+call from the API and, while the documentation of the API states that the call can be paged through using the
+<code>pageToken</code> argument, the responses to such call do not provide any <code>nextPageToken</code> to set such parameter. This means
+that the extension can operate safely with a maximum of 500 MiddleManagers instances at any time (the maximum number
+of instances to be returned for each call).</li></ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overlord-dynamic-configuration" class="table-of-contents__link toc-highlight">Overlord Dynamic Configuration</a></li><li><a href="#known-limitations" class="table-of- [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/google.html/index.html b/docs/26.0.0/development/extensions-contrib/google.html/index.html
new file mode 100644
index 000000000..f01232dcf
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/google.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/google">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/google" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/google' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/graphite.html/index.html b/docs/26.0.0/development/extensions-contrib/graphite.html/index.html
new file mode 100644
index 000000000..0acfb2467
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/graphite.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/graphite">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/graphite" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/graphite' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/graphite/index.html b/docs/26.0.0/development/extensions-contrib/graphite/index.html
new file mode 100644
index 000000000..c8ba0e970
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/graphite/index.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/graphite">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Graphite Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Metrics can be sent by using <a href="http://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-plaintext-protocol" target="_blank" rel="noopener noreferrer">plaintext</a> or <a href="http://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-pickle-protocol" target="_blank" rel="noopener noreferrer">pickle</a> protocol.
+The pickle protocol is more efficient and supports sending batches of metrics (plaintext protocol send only one metric) in one request; batch size is configurable.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>All the configuration parameters for graphite emitter are under <code>druid.emitter.graphite</code>.</p><table> [...]
+Graphite metric path is organized using the following schema:
+<code><namespacePrefix>.[<druid service name>].[<druid hostname>].<druid metrics dimensions>.<druid metrics name></code>
+Properly naming the metrics is critical to avoid conflicts, confusing data and potentially wrong interpretation later on.</p><p>Example <code>druid.historical.hist-host1_yahoo_com:8080.MyDataSourceName.GroupBy.query/time</code>:</p><ul><li><code>druid</code> -> namespace prefix</li><li><code>historical</code> -> service name</li><li><code>hist-host1.yahoo.com:8080</code> -> druid hostname</li><li><code>MyDataSourceName</code> -> dimension value</li><li><code>GroupBy</code> -& [...]
+The path will be in the form <code><namespacePrefix>.[<druid service name>].[<druid hostname>].<dimensions values ordered by dimension's name>.<metric></code>
+User has control of <code><namespacePrefix>.[<druid service name>].[<druid hostname>].</code></p><p>You can omit the hostname by setting <code>ignoreHostname=true</code>
+<code>druid.SERVICE_NAME.dataSourceName.queryType.query/time</code></p><p>You can omit the service name by setting <code>ignoreServiceName=true</code>
+<code>druid.HOSTNAME.dataSourceName.queryType.query/time</code></p><p>Elements in metric name by default are separated by "/", so graphite will create all metrics on one level. If you want to have metrics in the tree structure, you have to set <code>replaceSlashWithDot=true</code>
+Original: <code>druid.HOSTNAME.dataSourceName.queryType.query/time</code>
+Changed: <code>druid.HOSTNAME.dataSourceName.queryType.query.time</code></p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="to [...]
+Same as for the <code>all</code> converter user has control of <code><namespacePrefix>.[<druid service name>].[<druid hostname>].</code>
+White-list based converter comes with the following default white list map located under resources in <code>./src/main/resources/defaultWhiteListMap.json</code></p><p>Although user can override the default white list map by supplying a property called <code>mapPath</code>.
+This property is a String containing the path for the file containing <strong>white list map JSON object</strong>.
+For example the following converter will read the map from the file <code>/pathPrefix/fileName.json</code>.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/influx.html/index.html b/docs/26.0.0/development/extensions-contrib/influx.html/index.html
new file mode 100644
index 000000000..2632e6192
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/influx.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/influx">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/influx" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/influx' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/influx/index.html b/docs/26.0.0/development/extensions-contrib/influx/index.html
new file mode 100644
index 000000000..0070b51c1
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/influx/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/influx">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">InfluxDB Line Protocol Parser | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/influxdb-emitter.html/index.html b/docs/26.0.0/development/extensions-contrib/influxdb-emitter.html/index.html
new file mode 100644
index 000000000..7cac76e7e
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/influxdb-emitter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/influxdb-emitter">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/influxdb-emitter" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/influxdb-emitter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/influxdb-emitter/index.html b/docs/26.0.0/development/extensions-contrib/influxdb-emitter/index.html
new file mode 100644
index 000000000..7b861ed2b
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/influxdb-emitter/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/influxdb-emitter">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">InfluxDB Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+When a metric event is fired it is added to a queue of events. After a configurable amount of time, the events on the queue are transformed to InfluxDB's line protocol
+and POSTed to the InfluxDB HTTP API. The entire queue is flushed at this point. The queue is also flushed as the emitter is shutdown.</p><p>Note that authentication and authorization must be <a href="https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/" target="_blank" rel="noopener noreferrer">enabled</a> on the InfluxDB server.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-lin [...]
+which will be added as a tag to the line protocol string if the metric has a dimension from the white list.
+The value of the dimension is sanitized such that every occurrence of a dot or whitespace is replaced with a <code>_</code> .</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link toc-highlight">Introduction</a></li><li><a hr [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/k8s-jobs.html/index.html b/docs/26.0.0/development/extensions-contrib/k8s-jobs.html/index.html
new file mode 100644
index 000000000..052c304e6
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/k8s-jobs.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/k8s-jobs">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/k8s-jobs" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/k8s-jobs' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/k8s-jobs/index.html b/docs/26.0.0/development/extensions-contrib/k8s-jobs/index.html
new file mode 100644
index 000000000..984b2d9c2
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/k8s-jobs/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/k8s-jobs">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">MM-less Druid in K8s | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Task specific pod templates must be specified as the runtime property <code>druid.indexer.runner.k8s.podTemplate.{taskType}: /path/to/taskSpecificPodSpec.yaml</code> where {taskType} is the name of the task type i.e <code>index_parallel</code></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>To use this extension please ma [...]
+<code>druid.indexer.runner.type: k8s</code> and <code>druid.indexer.task.encapsulatedTask: true</code></p><p>You can add optional labels to your K8s jobs / pods if you need them by using the following configuration:
+<code>druid.indexer.runner.labels: '{"key":"value"}'</code>
+Annotations are the same with:
+<code>druid.indexer.runner.annotations: '{"key":"value"}'</code></p><p>All other configurations you had for the middle manager tasks must be moved under the overlord with one caveat, you must specify javaOpts as an array:
+<code>druid.indexer.runner.javaOptsArray</code>, <code>druid.indexer.runner.javaOpts</code> is no longer supported.</p><p>If you are running without a middle manager you need to also use <code>druid.processing.intermediaryData.storage.type=deepstore</code></p><p>Additional Configuration</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="properties">Properties<a href="#properties" class="hash-link" aria-label="Direct link to Properties" title="Direct link to Properties"></a></h3><tabl [...]
+Dockerfile:
+<code>ENTRYPOINT: ["foo.sh"]</code></p><p>and in your sidecar specs: </p><div class="language-container: codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-container: codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"> name: foo</span><br></span><span cl [...]
+*<em>Even for sidecars like Istio which are dynamically created by the service mesh, this needs to happen.</em> </p><p>Instead do the following:
+You can keep your Dockerfile the same but you must have a sidecar spec like so: </p><div class="language-container: codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-container: codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"> name: foo</span><br></span><span c [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/kafka-emitter.html/index.html b/docs/26.0.0/development/extensions-contrib/kafka-emitter.html/index.html
new file mode 100644
index 000000000..6e6f9738f
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/kafka-emitter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/kafka-emitter">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/kafka-emitter" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/kafka-emitter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/kafka-emitter/index.html b/docs/26.0.0/development/extensions-contrib/kafka-emitter/index.html
new file mode 100644
index 000000000..c2abfe9a2
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/kafka-emitter/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/kafka-emitter">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Kafka Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/develo [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Currently, Kafka has not only their nice ecosystem but also consumer API readily available.
+So, If you currently use Kafka, It's easy to integrate various tool or UI
+to monitor the status of your Druid cluster with this extension.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>All the configuration parameters for the Kafka emitter are under <code>druid.emitter.kafka</code>.</p><table><thead><tr><th>property</th><th>description</th><th>required?</th><th>default</th></tr></thead><tbody [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/kafka-simple.html/index.html b/docs/26.0.0/development/extensions-contrib/kafka-simple.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/kafka-simple.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/materialized-view.html/index.html b/docs/26.0.0/development/extensions-contrib/materialized-view.html/index.html
new file mode 100644
index 000000000..0405cfe3d
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/materialized-view.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/materialized-view">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/materialized-view" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/materialized-view' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/materialized-view/index.html b/docs/26.0.0/development/extensions-contrib/materialized-view/index.html
new file mode 100644
index 000000000..8b2d371df
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/materialized-view/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/materialized-view">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Materialized View | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/de [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The <code>derivativeDataSource</code> supervisor is used to keep the timeline of derived-dataSource consistent with base-dataSource. Each <code>derivativeDataSource</code> supervisor is responsible for one derived-dataSource.</p><p>A sample derivativeDataSource supervisor spec is shown below:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="pri [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles.html/index.html b/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles.html/index.html
new file mode 100644
index 000000000..9a9f7bc38
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles/index.html b/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles/index.html
new file mode 100644
index 000000000..fa022c13f
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/momentsketch-quantiles/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/momentsketch-quantiles">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Moment Sketches for Approximate Quantiles module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https:// [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The momentsketch provides coarse quantile estimates with less space and aggregation time overheads than traditional sketches, approaching the performance of counts and sums by reconstructing distributions from computed statistics.</p><p>To use this Apache Druid extension, <a href="/docs/26.0.0/development/extensions#loading-extensions">include</a> in the extensions load list.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="aggregator">Aggregator<a href="#aggregator" class="hash-lin [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/moving-average-query.html/index.html b/docs/26.0.0/development/extensions-contrib/moving-average-query.html/index.html
new file mode 100644
index 000000000..955713800
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/moving-average-query.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/moving-average-query">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/moving-average-query" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/moving-average-query' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/moving-average-query/index.html b/docs/26.0.0/development/extensions-contrib/moving-average-query/index.html
new file mode 100644
index 000000000..3a7aa66c6
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/moving-average-query/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/moving-average-query">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Moving Average Query | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Using a MeanNoNulls averager is useful when the interval starts at the dataset beginning time.
+In that case, the first records will ignore missing buckets and average won't be artificially low.
+However, this also means that empty days in a sparse dataset will also be ignored.</p><p>Example of usage:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, [...]
+A prime example would be weekly buckets, resulting in a Day of Week calculation. (Other examples: Month of year, Hour of day).</p><p>I.e. when using these parameters:</p><ul><li><em>granularity</em>: period=P1D (daily)</li><li><em>buckets</em>: 28</li><li><em>cycleSize</em>: 7</li></ul><p>Within each output record, the averager will compute the result over the following buckets: current (#0), #7, #14, #21.
+Whereas without specifying cycleSize it would have computed over all 28 buckets.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h2><p>All examples are based on the Wikipedia dataset provided in the Druid <a href="/docs/26.0.0/tutorials/">tutorials</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="basic-example">Basic example<a href="#basic-ex [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/opentsdb-emitter.html/index.html b/docs/26.0.0/development/extensions-contrib/opentsdb-emitter.html/index.html
new file mode 100644
index 000000000..b1176e69e
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/opentsdb-emitter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/opentsdb-emitter">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/opentsdb-emitter" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/opentsdb-emitter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/opentsdb-emitter/index.html b/docs/26.0.0/development/extensions-contrib/opentsdb-emitter/index.html
new file mode 100644
index 000000000..b79cea419
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/opentsdb-emitter/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/opentsdb-emitter">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">OpenTSDB Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+If the user does not specify their own JSON file, a default file is used. All metrics are expected to be configured in the JSON file. Metrics which are not configured will be logged.
+Desired metrics and dimensions is organized using the following schema:<code><druid metric name> : [ <dimension list> ]</code><br>
+e.g.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property">"query/time"</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> < [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/orc.html/index.html b/docs/26.0.0/development/extensions-contrib/orc.html/index.html
new file mode 100644
index 000000000..57dd5d774
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/orc.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/orc">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/orc" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/orc' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/parquet.html/index.html b/docs/26.0.0/development/extensions-contrib/parquet.html/index.html
new file mode 100644
index 000000000..452d08d6e
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/parquet.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/parquet">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/parquet" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/parquet' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/prometheus.html/index.html b/docs/26.0.0/development/extensions-contrib/prometheus.html/index.html
new file mode 100644
index 000000000..272d02329
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/prometheus.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/prometheus">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/prometheus" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/prometheus' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/prometheus/index.html b/docs/26.0.0/development/extensions-contrib/prometheus/index.html
new file mode 100644
index 000000000..57cc8afdb
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/prometheus/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/prometheus">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Prometheus Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/d [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+So, these tasks need to be configured to use <code>pushgateway</code> strategy to push metrics from Druid to prometheus gateway.</p><p>If this emitter is configured to use <code>exporter</code> strategy globally, some of the above configurations need to be overridden in the middle manager so that spawned peon tasks can still use the <code>pushgateway</code> strategy.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><d [...]
+be provided as a JSON file. Additionally, this mapping specifies which dimensions should be included for each metric. Prometheus expects
+histogram timers to use Seconds as the base unit. Timers which do not use seconds as a base unit can use the <code>conversionFactor</code> to set
+the base time unit. If the user does not specify their own JSON file, a default mapping is used. All
+metrics are expected to be mapped. Metrics which are not mapped will not be tracked.</p><p>Prometheus metric path is organized using the following schema:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span [...]
+the service name. For example:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property">"coordinator-segment/count"</span><span class="token plain"> </span><span class="token oper [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/rabbitmq.html/index.html b/docs/26.0.0/development/extensions-contrib/rabbitmq.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/rabbitmq.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/redis-cache.html/index.html b/docs/26.0.0/development/extensions-contrib/redis-cache.html/index.html
new file mode 100644
index 000000000..6a9b10335
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/redis-cache.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/redis-cache">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/redis-cache" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/redis-cache' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/redis-cache/index.html b/docs/26.0.0/development/extensions-contrib/redis-cache/index.html
new file mode 100644
index 000000000..4d19e88c7
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/redis-cache/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/redis-cache">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Druid Redis Cache | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/de [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/rocketmq.html/index.html b/docs/26.0.0/development/extensions-contrib/rocketmq.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/rocketmq.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/scan-query.html/index.html b/docs/26.0.0/development/extensions-contrib/scan-query.html/index.html
new file mode 100644
index 000000000..b8b7f4292
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/scan-query.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/querying/scan-query">
+ <link rel="canonical" href="/docs/26.0.0/querying/scan-query" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/querying/scan-query' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/sqlserver.html/index.html b/docs/26.0.0/development/extensions-contrib/sqlserver.html/index.html
new file mode 100644
index 000000000..52819d672
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/sqlserver.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/sqlserver">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/sqlserver" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/sqlserver' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/sqlserver/index.html b/docs/26.0.0/development/extensions-contrib/sqlserver/index.html
new file mode 100644
index 000000000..9427d5c57
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/sqlserver/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/sqlserver">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Microsoft SQLServer | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+with the location (host name and port) of the database.</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.metadata.storage.type=sqlserver</span><br></span><span class= [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/statsd.html/index.html b/docs/26.0.0/development/extensions-contrib/statsd.html/index.html
new file mode 100644
index 000000000..9d6551391
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/statsd.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/statsd">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/statsd" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/statsd' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/statsd/index.html b/docs/26.0.0/development/extensions-contrib/statsd/index.html
new file mode 100644
index 000000000..de4f1d7e9
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/statsd/index.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/statsd">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">StatsD Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/devel [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+(<a href="https://github.com/etsy/statsd" target="_blank" rel="noopener noreferrer">https://github.com/etsy/statsd</a>)
+(<a href="https://github.com/armon/statsite" target="_blank" rel="noopener noreferrer">https://github.com/armon/statsite</a>)</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>All the configuration parameters for the StatsD emitter are under <code>druid.emitter.statsd</code>.</p><table><thead><tr><th>property</th><th>descri [...]
+be provided as a JSON file. Additionally, this mapping specifies which dimensions should be included for each metric.
+StatsD expects that metric values be integers. Druid emits some metrics with values between the range 0 and 1. To accommodate these metrics they are converted
+into the range 0 to 100. This conversion can be enabled by setting the optional "convertRange" field true in the JSON mapping file.
+If the user does not specify their own JSON file, a default mapping is used. All
+metrics are expected to be mapped. Metrics which are not mapped will log an error.
+StatsD metric path is organized using the following schema:
+<code><druid metric name> : { "dimensions" : <dimension list>, "type" : <StatsD type>, "convertRange" : true/false}</code>
+e.g.
+<code>query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer"}</code></p><p>For metrics which are emitted from multiple services with different dimensions, the metric name is prefixed with
+the service name.
+e.g.
+<code>"coordinator-segment/count" : { "dimensions" : ["dataSource"], "type" : "gauge" },
+ "historical-segment/count" : { "dimensions" : ["dataSource", "tier", "priority"], "type" : "gauge" }</code></p><p>For most use-cases, the default mapping is sufficient.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__lef [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles.html/index.html b/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles.html/index.html
new file mode 100644
index 000000000..fae98e35b
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles/index.html b/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles/index.html
new file mode 100644
index 000000000..c5d661087
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/tdigestsketch-quantiles/index.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/tdigestsketch-quantiles">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">T-Digest Quantiles Sketch module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+T-Digest (<a href="https://github.com/tdunning/t-digest" target="_blank" rel="noopener noreferrer">https://github.com/tdunning/t-digest</a>) is a popular data structure for accurate on-line accumulation of
+rank-based statistics such as quantiles and trimmed means.
+The data structure is also designed for parallel programming use cases like distributed aggregations or map reduce jobs by making combining two intermediate t-digests easy and efficient.</p><p>The tDigestSketch aggregator is capable of generating sketches from raw numeric values as well as
+aggregating/combining pre-generated T-Digest sketches generated using the tDigestSketch aggregator itself.
+While one can generate sketches on the fly during the query time itself, it generally is more performant
+to generate sketches during ingestion time itself and then combining them during query time.
+The module also provides a postAggregator, quantilesFromTDigestSketch, that can be used to compute approximate
+quantiles from T-Digest sketches generated by the tDigestSketch aggregator.</p><p>To use this aggregator, make sure you <a href="/docs/26.0.0/development/extensions#loading-extensions">include</a> the extension in your config file:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLi [...]
+combining pre-generated T-Digest sketches.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span>< [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/thrift.html/index.html b/docs/26.0.0/development/extensions-contrib/thrift.html/index.html
new file mode 100644
index 000000000..b2a78ec2a
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/thrift.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/thrift">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/thrift" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/thrift' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/thrift/index.html b/docs/26.0.0/development/extensions-contrib/thrift/index.html
new file mode 100644
index 000000000..9252c8843
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/thrift/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/thrift">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Thrift | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/development/e [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/time-min-max.html/index.html b/docs/26.0.0/development/extensions-contrib/time-min-max.html/index.html
new file mode 100644
index 000000000..57f0c587e
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/time-min-max.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-contrib/time-min-max">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-contrib/time-min-max" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-contrib/time-min-max' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-contrib/time-min-max/index.html b/docs/26.0.0/development/extensions-contrib/time-min-max/index.html
new file mode 100644
index 000000000..b5b337ce5
--- /dev/null
+++ b/docs/26.0.0/development/extensions-contrib/time-min-max/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/time-min-max">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Timestamp Min/Max aggregators | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+To use this feature, a "timeMin" or "timeMax" aggregator must be included at indexing time.
+They can apply to any columns that can be converted to timestamp, which include Long, DateTime, Timestamp, and String types.</p><p>For example, when a data set consists of timestamp, dimension, and metric value like followings.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_ [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/approximate-histograms.html/index.html b/docs/26.0.0/development/extensions-core/approximate-histograms.html/index.html
new file mode 100644
index 000000000..0f1c4ea6c
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/approximate-histograms.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/approximate-histograms">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/approximate-histograms" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/approximate-histograms' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/approximate-histograms/index.html b/docs/26.0.0/development/extensions-core/approximate-histograms/index.html
new file mode 100644
index 000000000..c7d84cfa8
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/approximate-histograms/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/approximate-histograms">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Approximate Histogram aggregators | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.or [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<a href="http://jmlr.org/papers/volume11/ben-haim10a/ben-haim10a.pdf" target="_blank" rel="noopener noreferrer">http://jmlr.org/papers/volume11/ben-haim10a/ben-haim10a.pdf</a>
+to compute approximate histograms, with the following modifications:</p><ul><li>some tradeoffs in accuracy were made in the interest of speed (see below)</li><li>the sketch maintains the exact original data as long as the number of
+distinct data points is fewer than the resolutions (number of centroids),
+increasing accuracy when there are few data points, or when dealing with
+discrete data points. You can find some of the details in <a href="https://metamarkets.com/2013/histograms/" target="_blank" rel="noopener noreferrer">this post</a>.</li></ul><p>Here are a few things to note before using approximate histograms:</p><ul><li>As indicated in the original paper, there are no formal error bounds on the
+approximation. In practice, the approximation gets worse if the distribution
+is skewed.</li><li>The algorithm is order-dependent, so results can vary for the same query, due
+to variations in the order in which results are merged.</li><li>In general, the algorithm only works well if the data that comes is randomly
+distributed (i.e. if data points end up sorted in a column, approximation
+will be horrible)</li><li>We traded accuracy for aggregation speed, taking some shortcuts when adding
+histograms together, which can lead to pathological cases if your data is
+ordered in some way, or if your distribution has long tails. It should be
+cheaper to increase the resolution of the sketch to get the accuracy you need.</li></ul><p>That being said, those sketches can be useful to get a first order approximation
+when averages are not good enough. Assuming most rows in your segment store
+fewer data points than the resolution of histogram, you should be able to use
+them for monitoring purposes and detect meaningful variations with a few
+hundred centroids. To get good accuracy readings on 95th percentiles with
+millions of rows of data, you may want to use several thousand centroids,
+especially with long tails, since that's where the approximation will be worse.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="creating-approximate-histogram-sketches-at-ingestion-time">Creating approximate histogram sketches at ingestion time<a href="#creating-approximate-histogram-sketches-at-ingestion-time" class="hash-link" aria-label="Direct link to Creating approximate histogram sketches at ingestion time" title="Direct link to Creating approximate histogram sketches at [...]
+indexing time. The ingestion aggregator can only apply to numeric values. If you use "approxHistogram"
+then any input rows missing the value will be considered to have a value of 0, while with "approxHistogramFold"
+such rows will be ignored.</p><p>To query for results, an "approxHistogramFold" aggregator must be included in the
+query.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color [...]
+into bucketed histogram representations, as well as to compute various
+distribution metrics such as quantiles, min, and max.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="equal-buckets-post-aggregator">Equal buckets post-aggregator<a href="#equal-buckets-post-aggregator" class="hash-link" aria-label="Direct link to Equal buckets post-aggregator" title="Direct link to Equal buckets post-aggregator"></a></h3><p>Computes a visual representation of the approximate histogram with a given number of equal-sized bins.
+Bucket intervals are based on the range of the underlying data. This aggregator is not supported for the fixed buckets histogram.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/avro.html/index.html b/docs/26.0.0/development/extensions-core/avro.html/index.html
new file mode 100644
index 000000000..15af86409
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/avro.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/avro">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/avro" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/avro' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/avro/index.html b/docs/26.0.0/development/extensions-core/avro/index.html
new file mode 100644
index 000000000..d8fcf461e
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/avro/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/avro">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Avro | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/developm [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/azure.html/index.html b/docs/26.0.0/development/extensions-core/azure.html/index.html
new file mode 100644
index 000000000..46dafda28
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/azure.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/azure">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/azure" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/azure' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/azure/index.html b/docs/26.0.0/development/extensions-core/azure/index.html
new file mode 100644
index 000000000..9d8e758cc
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/azure/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/azure">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Microsoft Azure | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/deve [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/bloom-filter.html/index.html b/docs/26.0.0/development/extensions-core/bloom-filter.html/index.html
new file mode 100644
index 000000000..9d649e1f2
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/bloom-filter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/bloom-filter">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/bloom-filter" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/bloom-filter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/bloom-filter/index.html b/docs/26.0.0/development/extensions-core/bloom-filter/index.html
new file mode 100644
index 000000000..7dc720459
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/bloom-filter/index.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/bloom-filter">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Bloom Filter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/develop [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+against a bloom filter. A Bloom filter is a probabilistic data structure for performing a set membership check. A bloom
+filter is a good candidate to use with Druid for cases where an explicit filter is impossible, e.g. filtering a query
+against a set of millions of values.</p><p>Following are some characteristics of Bloom filters:</p><ul><li>Bloom filters are highly space efficient when compared to using a HashSet.</li><li>Because of the probabilistic nature of bloom filters, false positive results are possible (element was not actually
+inserted into a bloom filter during construction, but <code>test()</code> says true)</li><li>False negatives are not possible (if element is present then <code>test()</code> will never say false).</li><li>The false positive probability of this implementation is currently fixed at 5%, but increasing the number of entries
+that the filter can hold can decrease this false positive rate in exchange for overall size.</li><li>Bloom filters are sensitive to number of elements that will be inserted in the bloom filter. During the creation of bloom filter expected number of entries must be specified. If the number of insertions exceed
+the specified initial number of entries then false positive probability will increase accordingly.</li></ul><p>This extension is currently based on <code>org.apache.hive.common.util.BloomKFilter</code> from <code>hive-storage-api</code>. Internally,
+this implementation uses Murmur3 as the hash algorithm.</p><p>To construct a BloomKFilter externally with Java to use as a filter in a Druid query:</p><div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class=" [...]
+with the SQL operator.</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">bloom_filter_test</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="toke [...]
+important to set a reasonable value for the <code>maxNumEntries</code> parameter, which is the maximum number of distinct entries
+that the bloom filter can represent without increasing the false positive rate. It may be worth performing a query using
+one of the unique count sketches to calculate the value for this parameter in order to build a bloom filter appropriate
+for the query.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="json-specification-of-bloom-filter-aggregator">JSON Specification of Bloom Filter Aggregator<a href="#json-specification-of-bloom-filter-aggregator" class="hash-link" aria-label="Direct link to JSON Specification of Bloom Filter Aggregator" title="Direct link to JSON Specification of Bloom Filter Aggregator"></a></h3><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--pris [...]
+linear scan <em>of the filter itself</em> to count the number of set bits as a means of approximating how many items have been
+added to the set. As such, ordering by an alternate aggregation is recommended if possible.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="sql-bloom-filter-aggregator">SQL Bloom Filter Aggregator<a href="#sql-bloom-filter-aggregator" class="hash-link" aria-label="Direct link to SQL Bloom Filter Aggregator" title="Direct link to SQL Bloom Filter Aggregator"></a></h3><p>Bloom filters can be computed in SQL expressions with the <code>bloom_filter</code> aggregator:</p><div class="la [...]
+response are serialized into a base64 string, which can then be used in subsequent queries as a filter.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#filtering-queries-with-a-bloom-filter" class="table-of-contents__link toc-highlight">Filtering queries with a Bl [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/caffeine-cache.html/index.html b/docs/26.0.0/development/extensions-core/caffeine-cache.html/index.html
new file mode 100644
index 000000000..80cfb397d
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/caffeine-cache.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/configuration/">
+ <link rel="canonical" href="/docs/26.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-extension.html/index.html b/docs/26.0.0/development/extensions-core/datasketches-extension.html/index.html
new file mode 100644
index 000000000..8a203d391
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-extension.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/datasketches-extension">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/datasketches-extension" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/datasketches-extension' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-extension/index.html b/docs/26.0.0/development/extensions-core/datasketches-extension/index.html
new file mode 100644
index 000000000..7d9584004
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-extension/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/datasketches-extension">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">DataSketches extension | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-hll.html/index.html b/docs/26.0.0/development/extensions-core/datasketches-hll.html/index.html
new file mode 100644
index 000000000..9e75b2c11
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-hll.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/datasketches-hll">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/datasketches-hll" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/datasketches-hll' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-hll/index.html b/docs/26.0.0/development/extensions-core/datasketches-hll/index.html
new file mode 100644
index 000000000..74c46eb41
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-hll/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/datasketches-hll">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">DataSketches HLL Sketch module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/d [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+the estimate of the number of distinct values presented to the sketch. You can also use post aggregators to produce a union of sketch columns in the same row.
+You can use the HLL sketch aggregator on any column to estimate its cardinality.</p><p>To use this aggregator, make sure you <a href="/docs/26.0.0/development/extensions#loading-extensions">include</a> the extension in your config file:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBl [...]
+When applied at query time on an existing dimension, you can use the resulting column as an intermediate dimension by the <a href="#post-aggregators">post-aggregators</a>.</p><blockquote><p>It is very common to use <code>HLLSketchBuild</code> in combination with <a href="/docs/26.0.0/ingestion/rollup">rollup</a> to create a <a href="/docs/26.0.0/ingestion/ingestion-spec.html#metricsspec">metric</a> on high-cardinality columns. In this example, a metric called <code>userid_hll</code> is [...]
+The result will be an array containing three double values: estimate, lower bound and upper bound.
+The bounds are provided at a given number of standard deviations (optional, defaults to 1).
+This must be an integer value of 1, 2 or 3 corresponding to approximately 68.3%, 95.4% and 99.7% confidence intervals.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">{</span><br></span><span class [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-kll.html/index.html b/docs/26.0.0/development/extensions-core/datasketches-kll.html/index.html
new file mode 100644
index 000000000..b6187c54a
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-kll.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/datasketches-kll">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/datasketches-kll" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/datasketches-kll' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-kll/index.html b/docs/26.0.0/development/extensions-core/datasketches-kll/index.html
new file mode 100644
index 000000000..347ac89a0
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-kll/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/datasketches-kll">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">DataSketches KLL Sketch module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/d [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-quantiles.html/index.html b/docs/26.0.0/development/extensions-core/datasketches-quantiles.html/index.html
new file mode 100644
index 000000000..6dcb94022
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-quantiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/datasketches-quantiles">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/datasketches-quantiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/datasketches-quantiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-quantiles/index.html b/docs/26.0.0/development/extensions-core/datasketches-quantiles/index.html
new file mode 100644
index 000000000..9f7df7d53
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-quantiles/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/datasketches-quantiles">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">DataSketches Quantiles Sketch module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-theta.html/index.html b/docs/26.0.0/development/extensions-core/datasketches-theta.html/index.html
new file mode 100644
index 000000000..948dd531c
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-theta.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/datasketches-theta">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/datasketches-theta" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/datasketches-theta' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-theta/index.html b/docs/26.0.0/development/extensions-core/datasketches-theta/index.html
new file mode 100644
index 000000000..f1bdaca62
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-theta/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/datasketches-theta">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">DataSketches Theta Sketch module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Sketch algorithms are approximate. For more information, see <a href="https://datasketches.apache.org/docs/Theta/ThetaAccuracy.html" target="_blank" rel="noopener noreferrer">Accuracy</a> in the DataSketches documentation.</p><p>At ingestion time, the Theta sketch aggregator creates Theta sketch objects which are stored in Druid segments. Logically speaking, a Theta sketch object can be thought of as a Set data structure. At query time, sketches are read and aggregated (set unioned) toge [...]
+How many unique users visited both product A and product B?</p><p>to answer above questions, you would index your data using following aggregator.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="t [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-tuple.html/index.html b/docs/26.0.0/development/extensions-core/datasketches-tuple.html/index.html
new file mode 100644
index 000000000..4fa924608
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-tuple.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/datasketches-tuple">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/datasketches-tuple" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/datasketches-tuple' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/datasketches-tuple/index.html b/docs/26.0.0/development/extensions-core/datasketches-tuple/index.html
new file mode 100644
index 000000000..1903381be
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/datasketches-tuple/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/datasketches-tuple">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">DataSketches Tuple Sketch module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-aws-rds.html/index.html b/docs/26.0.0/development/extensions-core/druid-aws-rds.html/index.html
new file mode 100644
index 000000000..f76f01bb5
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-aws-rds.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/druid-aws-rds">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/druid-aws-rds" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/druid-aws-rds' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-aws-rds/index.html b/docs/26.0.0/development/extensions-core/druid-aws-rds/index.html
new file mode 100644
index 000000000..c49f8f471
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-aws-rds/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/druid-aws-rds">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Druid AWS RDS Module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+See <a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html" target="_blank" rel="noopener noreferrer">AWS Guide</a>.</p><p>To use this extension, make sure you <a href="/docs/26.0.0/development/extensions#loading-extensions">include</a> it in your config file along with other extensions e.g.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex">< [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-basic-security.html/index.html b/docs/26.0.0/development/extensions-core/druid-basic-security.html/index.html
new file mode 100644
index 000000000..01f10b7b8
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-basic-security.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/druid-basic-security">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/druid-basic-security" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/druid-basic-security' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-basic-security/index.html b/docs/26.0.0/development/extensions-core/druid-basic-security/index.html
new file mode 100644
index 000000000..053759fbc
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-basic-security/index.html
@@ -0,0 +1,155 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/druid-basic-security">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Basic Security | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/devel [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+See <a href="/docs/26.0.0/operations/security-overview.html#enable-an-authenticator">Security overview</a> for an example configuration for HTTP basic authentication.</p><p>Visit <a href="/docs/26.0.0/design/auth">Authentication and Authorization</a> for more information on the implemented extension interfaces and for an example configuration.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct li [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 60000</p><p><strong><code>druid.auth.basic.common.maxRandomDelay</code></strong></p><p>Defines in milliseconds the amount of random delay to add to the pollingPeriod, to spread polling requests across time.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 6000</p><p><strong><code>druid.auth.basic.common.maxSyncRetries</code></strong></p><p>Determines how many times a service will retry if the authentication/authorization Druid metadata store state sync with the Coordinator fails.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 10</p><p><strong><code>druid.auth.basic.common.cacheDirectory</code></strong></p><p>If defined, snapshots of the basic Authenticator and Authorizer Druid metadata store caches will be stored on disk in this directory. If this property is defined, when a service is starting, it will attempt to initialize its caches from these on-disk snapshots, if the service is unable to initialize [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="authenticator">Authenticator<a href="#authenticator" class="hash-link" aria-label="Direct link to Authenticator" title="Direct link to Authenticator"></a></h3><p>To use the Basic authenticator, add an authenticator with type <code>basic</code> to the authenticatorChain.
+The default credentials validator (<code>credentialsValidator</code>) is <code>metadata</code>. To use the LDAP validator, define a credentials validator with a type of 'ldap'.</p><p>Use the following syntax to configure a named authenticator:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><c [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.initialInternalClientPassword</code></strong></p><p>Initial <a href="/docs/26.0.0/operations/password-provider">Password Provider</a> for the default internal system user, used for internal process communication. If no password is specified, the default internal system user will not be created. If the def [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.enableCacheNotifications</code></strong></p><p>If true, the Coordinator will notify Druid processes whenever a configuration change to this Authenticator occurs, allowing them to immediately update their state without waiting for polling.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: True</p><p><strong><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.cacheNotificationTimeout</code></strong></p><p>The timeout in milliseconds for the cache notifications.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 5000</p><p><strong><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.credentialIterations</code></strong></p><p>Number of iterations to use for password hashing. See <a href="#credential-iterations-and-api-performance">Credential iterations and API performance</a><br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 10000</p><p><strong><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.credentialsValidator.type</code></strong></p><p>The type of credentials store (metadata) to validate requests credentials.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: metadata</p><p><strong><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.skipOnFailure</code></strong></p><p>If true and the request credential doesn't exists or isn't fully configured in the credentials store, the request will proceed to next Authenticator in the chain.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: false</p><p><strong><code>druid.auth.authenticator.MyBasicMetadataAuthenticator.authorizerName</code></strong></p><p>Authorizer that requests should be directed to.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="credential-iterations-and-api-performance">Credential iterations and API performance<a href="#credential-iterations-and-api-performance" class="hash-link" aria-label="Direct link to Credential iterations and API performance" title="Direct link to Credential iterations and API performance"></a></h5><p>As noted above, <code>cr [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.initialInternalClientPassword</code></strong></p><p>Initial <a href="/docs/26.0.0/operations/password-provider">Password Provider</a> for the default internal system user, used for internal process communication. If no password is specified, the default internal system user will not be created. If the default [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.enableCacheNotifications</code></strong></p><p>If true, the Coordinator will notify Druid processes whenever a configuration change to this Authenticator occurs, allowing them to immediately update their state without waiting for polling.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: true</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.cacheNotificationTimeout</code></strong></p><p>The timeout in milliseconds for the cache notifications.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 5000</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialIterations</code></strong></p><p>Number of iterations to use for password hashing.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 10000</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.type</code></strong></p><p>The type of credentials store (ldap) to validate requests credentials.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: metadata</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.url</code></strong></p><p>URL of the LDAP server.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.bindUser</code></strong></p><p>LDAP bind user username.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.bindPassword</code></strong></p><p><a href="/docs/26.0.0/operations/password-provider">Password Provider</a> LDAP bind user password.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.baseDn</code></strong></p><p>The point from where the LDAP server will search for users.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.userSearch</code></strong></p><p>The filter/expression to use for the search. For example, (&(sAMAccountName=%s)(objectClass=user))<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.userAttribute</code></strong></p><p>The attribute id identifying the attribute that will be returned as part of the search. For example, sAMAccountName.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.credentialVerifyDuration</code></strong></p><p>The duration in seconds for how long valid credentials are verifiable within the cache when not requested.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 600</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.credentialMaxDuration</code></strong></p><p>The max duration in seconds for valid credentials that can reside in cache regardless of how often they are requested.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 3600</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.credentialsValidator.credentialCacheSize</code></strong></p><p>The valid credentials cache size. The cache uses a LRU policy.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 100</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.skipOnFailure</code></strong></p><p>If true and the request credential doesn't exists or isn't fully configured in the credentials store, the request will proceed to next Authenticator in the chain.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: false</p><p><strong><code>druid.auth.authenticator.MyBasicLDAPAuthenticator.authorizerName</code></strong></p><p>Authorizer that requests should be directed to.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="escalator">Escalator<a href="#escalator" class="hash-link" aria-label="Direct link to Escalator" title="Direct link to Escalator"></a></h3><p>The Escalator determines the authentication scheme to use for internal Druid cluster communications, for example, when a Broker service communicates with a Historical service during qu [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><p><strong><code>druid.escalator.internalClientPassword</code></strong></p><p>The escalator will use this <a href="/docs/26.0.0/operations/password-provider">Password Provider</a> for requests made as the internal system user.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><p><strong><code>druid.escalator.authorizerName</code></strong></p><p>Authorizer that requests should be directed to.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="authorizer">Authorizer<a href="#authorizer" class="hash-link" aria-label="Direct link to Authorizer" title="Direct link to Authorizer"></a></h3><p>To use the Basic authorizer, add an authorizer with type <code>basic</code> to the authorizers list.</p><p>Use the following syntax to configure a named authorizer:</p><div class= [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: true</p><p><strong><code>druid.auth.authorizer.MyBasicMetadataAuthorizer.cacheNotificationTimeout</code></strong></p><p>The timeout in milliseconds for the cache notifications.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 5000</p><p><strong><code>druid.auth.authorizer.MyBasicMetadataAuthorizer.initialAdminUser</code></strong></p><p>The initial admin user with role defined in initialAdminRole property if specified, otherwise the default admin role will be assigned.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: admin</p><p><strong><code>druid.auth.authorizer.MyBasicMetadataAuthorizer.initialAdminRole</code></strong></p><p>The initial admin role to create if it doesn't already exists.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: admin</p><p><strong><code>druid.auth.authorizer.MyBasicMetadataAuthorizer.roleProvider.type</code></strong></p><p>The type of role provider to authorize requests credentials.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: metadata</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="properties-for-ldap-user-authorization">Properties for LDAP user authorization<a href="#properties-for-ldap-user-authorization" class="hash-link" aria-label="Direct link to Properties for LDAP user authorization" title="Direct link to Properties for LDAP user authorization"></a></h4><p><strong><code>druid.auth.authorize [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: true</p><p><strong><code>druid.auth.authorizer.MyBasicLDAPAuthorizer.cacheNotificationTimeout</code></strong></p><p>The timeout in milliseconds for the cache notifications.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: 5000</p><p><strong><code>druid.auth.authorizer.MyBasicLDAPAuthorizer.initialAdminUser</code></strong></p><p>The initial admin user with role defined in initialAdminRole property if specified, otherwise the default admin role will be assigned.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: admin</p><p><strong><code>druid.auth.authorizer.MyBasicLDAPAuthorizer.initialAdminRole</code></strong></p><p>The initial admin role to create if it doesn't already exists.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: admin</p><p><strong><code>druid.auth.authorizer.MyBasicLDAPAuthorizer.initialAdminGroupMapping</code></strong></p><p>The initial admin group mapping with role defined in initialAdminRole property if specified, otherwise the default admin role will be assigned. The name of this initial admin group mapping will be set to adminGroupMapping<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><p><strong><code>druid.auth.authorizer.MyBasicLDAPAuthorizer.roleProvider.type</code></strong></p><p>The type of role provider (ldap) to authorize requests credentials.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: metadata</p><p><strong><code>druid.auth.authorizer.MyBasicLDAPAuthorizer.roleProvider.groupFilters</code></strong></p><p>Array of LDAP group filters used to filter out the allowed set of groups returned from LDAP search. Filters can be begin with <em>, or end with ,</em> to provide configurational flexibility to limit or filter allowed set of groups available to LDAP Authorizer.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: null</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="properties-for-ldaps">Properties for LDAPS<a href="#properties-for-ldaps" class="hash-link" aria-label="Direct link to Properties for LDAPS" title="Direct link to Properties for LDAPS"></a></h4><p>Use the following properties to configure Druid authentication with LDAP over TLS (LDAPS). See <a href="/docs/26.0.0/operations/ [...]
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: tls</p><p><strong><code>druid.auth.basic.ssl.trustStorePath</code></strong></p><p>Path to the trust store file.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><p><strong><code>druid.auth.basic.ssl.trustStorePassword</code></strong></p><p>Password to access the trust store file.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: Yes<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><p><strong><code>druid.auth.basic.ssl.trustStoreType</code></strong></p><p>Format of the trust store file. For Java the format is jks.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: jks</p><p><strong><code>druid.auth.basic.ssl.trustStoreAlgorithm</code></strong></p><p>Algorithm used by the trust manager to validate certificate chains.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><p><strong><code>druid.auth.basic.ssl.trustStorePassword</code></strong></p><p>Password details that enable access to the truststore.<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Required</strong>: No<br>
+<!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <strong>Default</strong>: N/A</p><p>Example LDAPS configuration:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="to [...]
+Return a list of all user names.</p><p><code>GET(/druid-ext/basic-security/authentication/db/{authenticatorName}/users/{userName})</code><br>
+Return the name and credentials information of the user with name {userName}</p><p><code>POST(/druid-ext/basic-security/authentication/db/{authenticatorName}/users/{userName})</code><br>
+Create a new user with name {userName}</p><p><code>DELETE(/druid-ext/basic-security/authentication/db/{authenticatorName}/users/{userName})</code><br>
+Delete the user with name {userName}</p><p><code>POST(/druid-ext/basic-security/authentication/db/{authenticatorName}/users/{userName}/credentials)</code><br>
+Assign a password used for HTTP basic authentication for {userName}
+Content: JSON password request object</p><p>Example request body:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">{</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
+Return the current load status of the local caches of the authentication Druid metadata store.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="authorization-api">Authorization API<a href="#authorization-api" class="hash-link" aria-label="Direct link to Authorization API" title="Direct link to Authorization API"></a></h4><p>Root path: <code>/druid-ext/basic-security/authorization</code><br></p><p>Each API endpoint includes {authorizerName}, specifying which Authorizer instance is b [...]
+Return a list of all user names.</p><p><code>GET(/druid-ext/basic-security/authorization/db/{authorizerName}/users/{userName})</code><br>
+Return the name and role information of the user with name {userName}</p><p>Example output:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</s [...]
+Create a new user with name {userName}</p><p><code>DELETE(/druid-ext/basic-security/authorization/db/{authorizerName}/users/{userName})</code><br>
+Delete the user with name {userName}</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="group-mapping-creationdeletion">Group mapping Creation/Deletion<a href="#group-mapping-creationdeletion" class="hash-link" aria-label="Direct link to Group mapping Creation/Deletion" title="Direct link to Group mapping Creation/Deletion"></a></h5><p><code>GET(/druid-ext/basic-security/authorization/db/{authorizerName}/groupMappings)</code><br>
+Return a list of all group mappings.</p><p><code>GET(/druid-ext/basic-security/authorization/db/{authorizerName}/groupMappings/{groupMappingName})</code><br>
+Return the group mapping and role information of the group mapping with name {groupMappingName}</p><p><code>POST(/druid-ext/basic-security/authorization/db/{authorizerName}/groupMappings/{groupMappingName})</code><br>
+Create a new group mapping with name {groupMappingName}
+Content: JSON group mapping object
+Example request body:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">{</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> "name": "user&qu [...]
+Delete the group mapping with name {groupMappingName}</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="role-creationdeletion">Role Creation/Deletion<a href="#role-creationdeletion" class="hash-link" aria-label="Direct link to Role Creation/Deletion" title="Direct link to Role Creation/Deletion"></a></h4><p><code>GET(/druid-ext/basic-security/authorization/db/{authorizerName}/roles)</code><br>
+Return a list of all role names.</p><p><code>GET(/druid-ext/basic-security/authorization/db/{authorizerName}/roles/{roleName})</code><br>
+Return name and permissions for the role named {roleName}.</p><p>Example output:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span c [...]
+Create a new role with name {roleName}.
+Content: username string</p><p><code>DELETE(/druid-ext/basic-security/authorization/db/{authorizerName}/roles/{roleName})</code><br>
+Delete the role with name {roleName}.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="role-assignment">Role Assignment<a href="#role-assignment" class="hash-link" aria-label="Direct link to Role Assignment" title="Direct link to Role Assignment"></a></h4><p><code>POST(/druid-ext/basic-security/authorization/db/{authorizerName}/users/{userName}/roles/{roleName})</code><br>
+Assign role {roleName} to user {userName}.</p><p><code>DELETE(/druid-ext/basic-security/authorization/db/{authorizerName}/users/{userName}/roles/{roleName})</code><br>
+Unassign role {roleName} from user {userName}</p><p><code>POST(/druid-ext/basic-security/authorization/db/{authorizerName}/groupMappings/{groupMappingName}/roles/{roleName})</code><br>
+Assign role {roleName} to group mapping {groupMappingName}.</p><p><code>DELETE(/druid-ext/basic-security/authorization/db/{authorizerName}/groupMappings/{groupMappingName}/roles/{roleName})</code><br>
+Unassign role {roleName} from group mapping {groupMappingName}</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="permissions">Permissions<a href="#permissions" class="hash-link" aria-label="Direct link to Permissions" title="Direct link to Permissions"></a></h4><p><code>POST(/druid-ext/basic-security/authorization/db/{authorizerName}/roles/{roleName}/permissions)</code><br>
+Set the permissions of {roleName}. This replaces the previous set of permissions on the role.</p><p>Content: List of JSON Resource-Action objects, e.g.:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token pla [...]
+Return the current load status of the local caches of the authorization Druid metadata store.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#configuration" class="table-of-contents__link toc-highlight">Configuration</a><ul><li><a href="#general-properties" class= [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-kerberos.html/index.html b/docs/26.0.0/development/extensions-core/druid-kerberos.html/index.html
new file mode 100644
index 000000000..a0f76b29e
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-kerberos.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/druid-kerberos">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/druid-kerberos" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/druid-kerberos' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-kerberos/index.html b/docs/26.0.0/development/extensions-core/druid-kerberos/index.html
new file mode 100644
index 000000000..e4fb95b2f
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-kerberos/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/druid-kerberos">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Kerberos | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/development [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This extension adds an Authenticator which is used to protect HTTP Endpoints using the simple and protected GSSAPI negotiation mechanism <a href="https://en.wikipedia.org/wiki/SPNEGO" target="_blank" rel="noopener noreferrer">SPNEGO</a>.
+Make sure to <a href="/docs/26.0.0/development/extensions#loading-extensions">include</a> <code>druid-kerberos</code> in the extensions load list.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="creating-an-authenticator">Creating an Authenticator<a href="#creating-an-authen [...]
+The special string _HOST will be replaced automatically with the value of config <code>druid.host</code></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="druidauthauthenticatorkerberosexcludedpaths"><code>druid.auth.authenticator.kerberos.excludedPaths</code><a href="#druidauthauthenticatorkerberosexcludedpaths" class="hash-link" aria-label="Direct link to druidauthauthenticatorkerberosexcludedpaths" title="Direct link to druidauthauthenticatorkerberosexcludedpaths"></a></h3><p>In [...]
+The syntax for mapping rules is <code>RULE:\[n:string](regexp)s/pattern/replacement/g</code>. The integer n indicates how many components the target principal should have. If this matches, then a string will be formed from string, substituting the realm of the principal for $0 and the nth component of the principal for $n. e.g. if the principal was druid/admin then <code>\[2:$2$1suffix]</code> would result in the string <code>admindruidsuffix</code>.
+If this string matches regexp, then the s//<!-- -->[<!-- -->g] substitution command will be run over the string. The optional g will cause the substitution to be global over the string, instead of replacing only the first match in the string.
+If required, multiple rules can be joined by newline character and specified as a String.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="increasing-http-header-size-for-large-spnego-negotiate-header">Increasing HTTP Header size for large SPNEGO negotiate header<a href="#increasing-http-header-size-for-large-spnego-negotiate-header" class="hash-link" aria-label="Direct link to Increasing HTTP Header size for large SPNEGO negotiate header" title="Direct link to Increasing HTTP Heade [...]
+which includes all security groups for the user. In some cases when the user belongs to many security groups the header to grow beyond what druid can handle by default.
+In such cases, max request header size that druid can handle can be increased by setting <code>druid.server.http.maxRequestHeaderSize</code> (default 8KiB) and <code>druid.router.http.maxRequestBufferSize</code> (default 8KiB).</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-kerberos-escalated-client">Configuring Kerberos Escalated Client<a href="#configuring-kerberos-escalated-client" class="hash-link" aria-label="Direct link to Configuring Kerberos Escalated Client" t [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-lookups.html/index.html b/docs/26.0.0/development/extensions-core/druid-lookups.html/index.html
new file mode 100644
index 000000000..c0c61a3a3
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-lookups.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/druid-lookups">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/druid-lookups" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/druid-lookups' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-lookups/index.html b/docs/26.0.0/development/extensions-core/druid-lookups/index.html
new file mode 100644
index 000000000..30999ee2b
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-lookups/index.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/druid-lookups">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Cached Lookup Module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The main goal of this cache is to speed up the access to a high latency lookup sources and to provide a caching isolation for every lookup source.
+Thus user can define various caching strategies or and implementation per lookup, even if the source is the same.
+This module can be used side to side with other lookup module like the global cached lookup module.</p><p>To use this Apache Druid extension, <a href="/docs/26.0.0/development/extensions#loading-extensions">include</a> <code>druid-lookups-cached-single</code> in the extensions load list.</p><blockquote><p>If using JDBC, you will need to add your database's client JAR files to the extension's directory.
+For Postgres, the connector JAR is already included.
+See the MySQL extension documentation for instructions to obtain <a href="/docs/26.0.0/development/extensions-core/mysql#installing-the-mysql-connector-library">MySQL</a> or <a href="/docs/26.0.0/development/extensions-core/mysql#alternative-installing-the-mariadb-connector-library">MariaDB</a> connector libraries.
+Copy or symlink the downloaded file to <code>extensions/druid-lookups-cached-single</code> under the distribution root directory.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="architecture">Architecture<a href="#architecture" class="hash-link" aria-label="Direct link to Architecture" title="Direct link to Architecture"></a></h2><p>Generally speaking this module can be divided into two main component, namely, the data fetcher layer and caching layer.</p><h3 class="an [...]
+For instance <code>JdbcDataFetcher</code> provides an implementation of <code>DataFetcher</code> that can be used to fetch key/value from a RDBMS via JDBC driver.
+If you need new type of data fetcher, all you need to do, is to implement the interface <code>DataFetcher</code> and load it via another druid module.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="caching-layer">Caching layer<a href="#caching-layer" class="hash-link" aria-label="Direct link to Caching layer" title="Direct link to Caching layer"></a></h3><p>This extension comes with two different caching strategies. First strategy is a poll based and the second is a load based.</ [...]
+Hence, user should make sure that the cache can fit all the data.
+The current implementation provides 2 type of poll cache, the first is on-heap (uses immutable map), while the second uses MapDB based off-heap map.
+User can also implement a different lookup polling cache by implementing <code>PollingCacheFactory</code> and <code>PollingCache</code> interfaces.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="loading-lookup">Loading lookup<a href="#loading-lookup" class="hash-link" aria-label="Direct link to Loading lookup" title="Direct link to Loading lookup"></a></h4><p>Loading cache strategy will load the key/value pair upon request on the key it self, the general algorithm is load key if absent.
+Once the key/value pair is loaded eviction will occur according to the cache eviction policy.
+This module comes with two loading lookup implementation, the first is on-heap backed by a Guava cache implementation, the second is MapDB off-heap implementation.
+Both implementations offer various eviction strategies.
+Same for Loading cache, developer can implement a new type of loading cache by implementing <code>LookupLoadingCache</code> interface.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration-and-operation">Configuration and Operation:<a href="#configuration-and-operation" class="hash-link" aria-label="Direct link to Configuration and Operation:" title="Direct link to Configuration and Operation:"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="polling-lookup">Pol [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-pac4j.html/index.html b/docs/26.0.0/development/extensions-core/druid-pac4j.html/index.html
new file mode 100644
index 000000000..cedde9495
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-pac4j.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/druid-pac4j">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/druid-pac4j" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/druid-pac4j' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-pac4j/index.html b/docs/26.0.0/development/extensions-core/druid-pac4j/index.html
new file mode 100644
index 000000000..58041aaf9
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-pac4j/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/druid-pac4j">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Druid pac4j based Security extension | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This can be used with any authentication server that supports same e.g. <a href="https://developer.okta.com/" target="_blank" rel="noopener noreferrer">Okta</a>.
+The pac4j authenticator should only be used at the router node to enable a group of users in existing authentication server to interact with Druid cluster, using the <a href="/docs/26.0.0/operations/web-console">web console</a>. </p><p>This extension also provides a JWT authenticator that validates <a href="https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken" target="_blank" rel="noopener noreferrer">ID Tokens</a> associated with a request. ID Tokens are attached to the req [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-ranger-security.html/index.html b/docs/26.0.0/development/extensions-core/druid-ranger-security.html/index.html
new file mode 100644
index 000000000..ebb513908
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-ranger-security.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/druid-ranger-security">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/druid-ranger-security" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/druid-ranger-security' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/druid-ranger-security/index.html b/docs/26.0.0/development/extensions-core/druid-ranger-security/index.html
new file mode 100644
index 000000000..be2ec237d
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/druid-ranger-security/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/druid-ranger-security">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Ranger Security | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/examples.html/index.html b/docs/26.0.0/development/extensions-core/examples.html/index.html
new file mode 100644
index 000000000..6b96773ae
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/examples.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/examples">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/examples" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/examples' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/examples/index.html b/docs/26.0.0/development/extensions-core/examples/index.html
new file mode 100644
index 000000000..341faf574
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/examples/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/examples">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Extension Examples | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/d [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/google.html/index.html b/docs/26.0.0/development/extensions-core/google.html/index.html
new file mode 100644
index 000000000..f01232dcf
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/google.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/google">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/google" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/google' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/google/index.html b/docs/26.0.0/development/extensions-core/google/index.html
new file mode 100644
index 000000000..23c45f169
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/google/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/google">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Google Cloud Storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+to read objects directly from Google Cloud Storage. If you use the <a href="/docs/26.0.0/ingestion/hadoop">Hadoop task</a>,
+you can read data from Google Cloud Storage by specifying the paths in your <a href="/docs/26.0.0/ingestion/hadoop#inputspec"><code>inputSpec</code></a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deep-storage">Deep Storage<a href="#deep-storage" class="hash-link" aria-label="Direct link to Deep Storage" title="Direct link to Deep Storage"></a></h3><p>Deep storage can be written to Google Cloud Storage either via this extension or the <a href="/docs/26.0.0/development/extensi [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/hdfs.html/index.html b/docs/26.0.0/development/extensions-core/hdfs.html/index.html
new file mode 100644
index 000000000..e33e9f4a9
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/hdfs.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/hdfs">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/hdfs" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/hdfs' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/hdfs/index.html b/docs/26.0.0/development/extensions-core/hdfs/index.html
new file mode 100644
index 000000000..a88956cd8
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/hdfs/index.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/hdfs">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">HDFS | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/development/ext [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+in the Druid classpath. One way to do this is copying all those files under <code>${DRUID_HOME}/conf/_common</code>.</p><p>If you are using the Hadoop ingestion, set your output directory to be a location on Hadoop and it will work.
+If you want to eagerly authenticate against a secured hadoop/hdfs cluster you must set <code>druid.hadoop.security.kerberos.principal</code> and <code>druid.hadoop.security.kerberos.keytab</code>, this is an alternative to the cron job method that runs <code>kinit</code> command periodically.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="configuration-for-cloud-storage">Configuration for Cloud Storage<a href="#configuration-for-cloud-storage" class="hash-link" aria-label="Direct [...]
+Run the below command to install the <code>hadoop-aws.jar</code> file under <code>${DRUID_HOME}/extensions/druid-hdfs-storage</code> in all nodes.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="t [...]
+For more configurations, see the <a href="https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/" target="_blank" rel="noopener noreferrer">Hadoop AWS module</a>.</p><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="col [...]
+Please read the <a href="https://github.com/GoogleCloudPlatform/bigdata-interop/blob/master/gcs/INSTALL.md" target="_blank" rel="noopener noreferrer">install instructions</a>
+to properly set up the necessary libraries and configurations.
+One option is to place this jar in <code>${DRUID_HOME}/lib/</code> and <code>${DRUID_HOME}/extensions/druid-hdfs-storage/</code>.</p><p>Finally, you need to configure the <code>core-site.xml</code> file with the filesystem
+and authentication properties needed for GCS. You may want to copy the below
+example properties. Please follow the instructions at
+<a href="https://github.com/GoogleCloudPlatform/bigdata-interop/blob/master/gcs/INSTALL.md" target="_blank" rel="noopener noreferrer">https://github.com/GoogleCloudPlatform/bigdata-interop/blob/master/gcs/INSTALL.md</a>
+for more details.
+For more configurations, <a href="https://github.com/GoogleCloudDataproc/hadoop-connectors/blob/v2.0.0/gcs/conf/gcs-core-default.xml" target="_blank" rel="noopener noreferrer">GCS core default</a>
+and <a href="https://github.com/GoogleCloudPlatform/bdutil/blob/master/conf/hadoop2/gcs-core-template.xml" target="_blank" rel="noopener noreferrer">GCS core template</a>.</p><div class="language-xml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-xml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color: [...]
+to read files directly from the HDFS Storage. You may be able to read objects from cloud storage
+with the HDFS input source, but we highly recommend to use a proper
+<a href="/docs/26.0.0/ingestion/native-batch-input-sources">Input Source</a> instead if possible because
+it is simple to set up. For now, only the <a href="/docs/26.0.0/ingestion/native-batch-input-sources#s3-input-source">S3 input source</a>
+and the <a href="/docs/26.0.0/ingestion/native-batch-input-sources#google-cloud-storage-input-source">Google Cloud Storage input source</a>
+are supported for cloud storage types, and so you may still want to use the HDFS input source
+to read from cloud storage other than those two.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="hadoop-based-ingestion">Hadoop-based ingestion<a href="#hadoop-based-ingestion" class="hash-link" aria-label="Direct link to Hadoop-based ingestion" title="Direct link to Hadoop-based ingestion"></a></h3><p>If you use the <a href="/docs/26.0.0/ingestion/hadoop">Hadoop ingestion</a>, you can read data from HDFS
+by specifying the paths in your <a href="/docs/26.0.0/ingestion/hadoop#inputspec"><code>inputSpec</code></a>.
+See the <a href="/docs/26.0.0/ingestion/hadoop#static">Static</a> inputSpec for details.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#deep-storage" class="table-of-contents__link toc-highlight">Deep Storage</a><ul><li><a href="#configuration-for-hdfs" class="ta [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-eight-firehose.html/index.html b/docs/26.0.0/development/extensions-core/kafka-eight-firehose.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-eight-firehose.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-extraction-namespace.html/index.html b/docs/26.0.0/development/extensions-core/kafka-extraction-namespace.html/index.html
new file mode 100644
index 000000000..e412051d6
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-extraction-namespace.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kafka-extraction-namespace">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kafka-extraction-namespace" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kafka-extraction-namespace' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-extraction-namespace/index.html b/docs/26.0.0/development/extensions-core/kafka-extraction-namespace/index.html
new file mode 100644
index 000000000..c58552075
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-extraction-namespace/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/kafka-extraction-namespace">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Kafka Lookups | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-ingestion.html/index.html b/docs/26.0.0/development/extensions-core/kafka-ingestion.html/index.html
new file mode 100644
index 000000000..91f91ffaa
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-ingestion.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kafka-ingestion">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kafka-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kafka-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-ingestion/index.html b/docs/26.0.0/development/extensions-core/kafka-ingestion/index.html
new file mode 100644
index 000000000..491381e24
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-ingestion/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/kafka-ingestion">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Kafka ingestion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+For a full description of all the fields and parameters in a Kafka supervisor spec, see the <a href="/docs/26.0.0/development/extensions-core/kafka-supervisor-reference">Kafka supervisor reference</a>.</li></ul><p>The following sections contain examples to help you get started with supervisor specs.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="json-input-format-supervisor-spec-example">JSON input format supervisor spec example<a href="#json-input-format-supervisor-spec-example" [...]
+Additionally, you must provide information about how Druid should parse the data in the Kafka message:</li><li><code>headerFormat</code>: The default "string" decodes UTF8-encoded strings from the Kafka header. If you need another format, you can implement your own parser.</li><li><code>keyFormat</code>: Takes a Druid <code>inputFormat</code> and uses the value for the first key it finds. According to the example the value is "wiki-edit". It discards the key name in t [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-supervisor-operations.html/index.html b/docs/26.0.0/development/extensions-core/kafka-supervisor-operations.html/index.html
new file mode 100644
index 000000000..b5daa35b5
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-supervisor-operations.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kafka-supervisor-operations">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kafka-supervisor-operations" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kafka-supervisor-operations' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-supervisor-operations/index.html b/docs/26.0.0/development/extensions-core/kafka-supervisor-operations/index.html
new file mode 100644
index 000000000..7327d5fef
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-supervisor-operations/index.html
@@ -0,0 +1,105 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/kafka-supervisor-operations">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Kafka supervisor operations reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://drui [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+offsets as reported by Kafka, the consumer lag per partition, as well as the aggregate lag of all partitions. The
+consumer lag per partition may be reported as negative values if the supervisor has not received a recent latest offset
+response from Kafka. The aggregate lag value will always be >= 0.</p><p>The status report also contains the supervisor's state and a list of recently thrown exceptions (reported as
+<code>recentErrors</code>, whose max size can be controlled using the <code>druid.supervisor.maxStoredExceptionEvents</code> configuration).
+There are two fields related to the supervisor's state - <code>state</code> and <code>detailedState</code>. The <code>state</code> field will always be
+one of a small number of generic states that are applicable to any type of supervisor, while the <code>detailedState</code> field
+will contain a more descriptive, implementation-specific state that may provide more insight into the supervisor's
+activities than the generic <code>state</code> field.</p><p>The list of possible <code>state</code> values are: <!-- -->[<code>PENDING</code>, <code>RUNNING</code>, <code>SUSPENDED</code>, <code>STOPPING</code>, <code>UNHEALTHY_SUPERVISOR</code>, <code>UNHEALTHY_TASKS</code>]</p><p>The list of <code>detailedState</code> values and their corresponding <code>state</code> mapping is as follows:</p><table><thead><tr><th>Detailed State</th><th>Corresponding State</th><th>Description</th></tr> [...]
+1) Fetch the list of partitions from Kafka and determine the starting offset for each partition (either based on the
+last processed offset if continuing, or starting from the beginning or ending of the stream if this is a new topic).
+2) Discover any running indexing tasks that are writing to the supervisor's datasource and adopt them if they match
+the supervisor's configuration, else signal them to stop.
+3) Send a status request to each supervised task to update our view of the state of the tasks under our supervision.
+4) Handle tasks that have exceeded <code>taskDuration</code> and should transition from the reading to publishing state.
+5) Handle tasks that have finished publishing and signal redundant replica tasks to stop.
+6) Handle tasks that have failed and clean up the supervisor's internal state.
+7) Compare the list of healthy tasks to the requested <code>taskCount</code> and <code>replicas</code> configurations and create additional tasks if required in case supervisor is not idle.</p><p>The <code>detailedState</code> field will show additional values (those marked with "first iteration only") the first time the
+supervisor executes this run loop after startup or after resuming from a suspension. This is intended to surface
+initialization-type issues, where the supervisor is unable to reach a stable state (perhaps because it can't connect to
+Kafka, it can't read from the Kafka topic, or it can't communicate with existing tasks). Once the supervisor is stable -
+that is, once it has completed a full execution without encountering any issues - <code>detailedState</code> will show a <code>RUNNING</code>
+state until it is idle, stopped, suspended, or hits a task failure threshold and transitions to an unhealthy state.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="getting-supervisor-ingestion-stats-report">Getting Supervisor Ingestion Stats Report<a href="#getting-supervisor-ingestion-stats-report" class="hash-link" aria-label="Direct link to Getting Supervisor Ingestion Stats Report" title="Direct link to Getting Supervisor Ingestion Stats Report"></a></h2><p><code>GET /druid/in [...]
+<code>503 Service Unavailable</code> if it is unhealthy. Healthiness is determined by the supervisor's <code>state</code> (as returned by the
+<code>/status</code> endpoint) and the <code>druid.supervisor.*</code> Overlord configuration thresholds.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="updating-existing-supervisors">Updating Existing Supervisors<a href="#updating-existing-supervisors" class="hash-link" aria-label="Direct link to Updating Existing Supervisors" title="Direct link to Updating Existing Supervisors"></a></h2><p><code>POST /druid/indexer/v1/supervisor</code> can be used to update existing supervisor spec.
+Calling this endpoint when there is already an existing supervisor for the same dataSource will cause:</p><ul><li>The running supervisor to signal its managed tasks to stop reading and begin publishing.</li><li>The running supervisor to exit.</li><li>A new supervisor to be created using the configuration provided in the request body. This supervisor will retain the
+existing publishing tasks and will create new tasks starting at the offsets the publishing tasks ended on.</li></ul><p>Seamless schema migrations can thus be achieved by simply submitting the new schema using this endpoint.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="suspending-and-resuming-supervisors">Suspending and Resuming Supervisors<a href="#suspending-and-resuming-supervisors" class="hash-link" aria-label="Direct link to Suspending and Resuming Supervisors" title="Direct [...]
+it will just ensure that no indexing tasks are running until the supervisor is resumed.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="resetting-supervisors">Resetting Supervisors<a href="#resetting-supervisors" class="hash-link" aria-label="Direct link to Resetting Supervisors" title="Direct link to Resetting Supervisors"></a></h2><p>The <code>POST /druid/indexer/v1/supervisor/<supervisorId>/reset</code> operation clears stored
+offsets, causing the supervisor to start reading offsets from either the earliest or latest
+offsets in Kafka (depending on the value of <code>useEarliestOffset</code>). After clearing stored
+offsets, the supervisor kills and recreates any active tasks, so that tasks begin reading
+from valid offsets. </p><p>Use care when using this operation! Resetting the supervisor may cause Kafka messages
+to be skipped or read twice, resulting in missing or duplicate data. </p><p>The reason for using this operation is to recover from a state in which the supervisor
+ceases operating due to missing offsets. The indexing service keeps track of the latest
+persisted Kafka offsets in order to provide exactly-once ingestion guarantees across
+tasks. Subsequent tasks must start reading from where the previous task completed in
+order for the generated segments to be accepted. If the messages at the expected
+starting offsets are no longer available in Kafka (typically because the message retention
+period has elapsed or the topic was removed and re-created) the supervisor will refuse
+to start and in flight tasks will fail. This operation enables you to recover from this condition. </p><p>Note that the supervisor must be running for this endpoint to be available.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="terminating-supervisors">Terminating Supervisors<a href="#terminating-supervisors" class="hash-link" aria-label="Direct link to Terminating Supervisors" title="Direct link to Terminating Supervisors"></a></h2><p>The <code>POST /druid/indexer/v1/supervisor [...]
+associated indexing tasks managed by this supervisor to immediately stop and begin
+publishing their segments. This supervisor will still exist in the metadata store and its history may be retrieved
+with the supervisor history API, but will not be listed in the 'get supervisors' API response nor can it's configuration
+or status report be retrieved. The only way this supervisor can start again is by submitting a functioning supervisor
+spec to the create API.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="capacity-planning">Capacity Planning<a href="#capacity-planning" class="hash-link" aria-label="Direct link to Capacity Planning" title="Direct link to Capacity Planning"></a></h2><p>Kafka indexing tasks run on MiddleManagers and are thus limited by the resources available in the MiddleManager
+cluster. In particular, you should make sure that you have sufficient worker capacity (configured using the
+<code>druid.worker.capacity</code> property) to handle the configuration in the supervisor spec. Note that worker capacity is
+shared across all types of indexing tasks, so you should plan your worker capacity to handle your total indexing load
+(e.g. batch processing, realtime tasks, merging tasks, etc.). If your workers run out of capacity, Kafka indexing tasks
+will queue and wait for the next available worker. This may cause queries to return partial results but will not result
+in data loss (assuming the tasks run before Kafka purges those offsets).</p><p>A running task will normally be in one of two states: <em>reading</em> or <em>publishing</em>. A task will remain in reading state for
+<code>taskDuration</code>, at which point it will transition to publishing state. A task will remain in publishing state for as long
+as it takes to generate segments, push segments to deep storage, and have them be loaded and served by a Historical process
+(or until <code>completionTimeout</code> elapses).</p><p>The number of reading tasks is controlled by <code>replicas</code> and <code>taskCount</code>. In general, there will be <code>replicas * taskCount</code>
+reading tasks, the exception being if taskCount > {numKafkaPartitions} in which case {numKafkaPartitions} tasks will
+be used instead. When <code>taskDuration</code> elapses, these tasks will transition to publishing state and <code>replicas * taskCount</code>
+new reading tasks will be created. Therefore to allow for reading tasks and publishing tasks to run concurrently, there
+should be a minimum capacity of:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">workerCapacity = 2 * replicas * taskCount</span><br></span></code></pre><div class="buttonGroup__atx"><button type=" [...]
+In some circumstances, it is possible to have multiple sets of tasks publishing simultaneously. This would happen if the
+time-to-publish (generate segment, push to deep storage, loaded on Historical) > <code>taskDuration</code>. This is a valid
+scenario (correctness-wise) but requires additional worker capacity to support. In general, it is a good idea to have
+<code>taskDuration</code> be large enough that the previous set of tasks finishes publishing before the current set begins.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="supervisor-persistence">Supervisor Persistence<a href="#supervisor-persistence" class="hash-link" aria-label="Direct link to Supervisor Persistence" title="Direct link to Supervisor Persistence"></a></h2><p>When a supervisor spec is submitted via the <code>POST /druid/indexer/v1/supervisor</code> endpoint, it is [...]
+configured metadata database. There can only be a single supervisor per dataSource, and submitting a second spec for
+the same dataSource will overwrite the previous one.</p><p>When an Overlord gains leadership, either by being started or as a result of another Overlord failing, it will spawn
+a supervisor for each supervisor spec in the metadata database. The supervisor will then discover running Kafka indexing
+tasks and will attempt to adopt them if they are compatible with the supervisor's configuration. If they are not
+compatible because they have a different ingestion spec or partition allocation, the tasks will be killed and the
+supervisor will create a new set of tasks. In this way, the supervisors are persistent across Overlord restarts and
+fail-overs.</p><p>A supervisor is stopped via the <code>POST /druid/indexer/v1/supervisor/<supervisorId>/terminate</code> endpoint. This places a
+tombstone marker in the database (to prevent the supervisor from being reloaded on a restart) and then gracefully
+shuts down the currently running supervisor. When a supervisor is shut down in this way, it will instruct its
+managed tasks to stop reading and begin publishing their segments immediately. The call to the shutdown endpoint will
+return after all tasks have been signaled to stop but before the tasks finish publishing their segments.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="schemaconfiguration-changes">Schema/Configuration Changes<a href="#schemaconfiguration-changes" class="hash-link" aria-label="Direct link to Schema/Configuration Changes" title="Direct link to Schema/Configuration Changes"></a></h3><p>Schema and configuration changes are handled by submitting the new supervisor spec via the same
+<code>POST /druid/indexer/v1/supervisor</code> endpoint used to initially create the supervisor. The Overlord will initiate a
+graceful shutdown of the existing supervisor which will cause the tasks being managed by that supervisor to stop reading
+and begin publishing their segments. A new supervisor will then be started which will create a new set of tasks that
+will start reading from the offsets where the previous now-publishing tasks left off, but using the updated schema.
+In this way, configuration changes can be applied without requiring any pause in ingestion.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="deployment-notes-on-kafka-partitions-and-druid-segments">Deployment Notes on Kafka partitions and Druid segments<a href="#deployment-notes-on-kafka-partitions-and-druid-segments" class="hash-link" aria-label="Direct link to Deployment Notes on Kafka partitions and Druid segments" title="Direct link to Deployment Notes on Kafka partitions and Dr [...]
+After 4 hours at 13:10, Druid starts a new set of tasks. The events for the interval 13:00 - 14:00 may be split across existing tasks and the new set of tasks which could result in small segments. To merge them together into new segments of an ideal size (in the range of ~500-700 MB per segment), you can schedule re-indexing tasks, optionally with a different segment granularity.</li></ul><p>For more detail, see <a href="/docs/26.0.0/operations/segment-optimization">Segment size optimiza [...]
+There is also ongoing work to support automatic segment compaction of sharded segments as well as compaction not requiring
+Hadoop (see <a href="https://github.com/apache/druid/pull/5102" target="_blank" rel="noopener noreferrer">here</a>).</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/development/extensions-core/kafka-supervisor-reference"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Apache Kafka supervisor</div></a><a class="pagination-nav__link pa [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-supervisor-reference.html/index.html b/docs/26.0.0/development/extensions-core/kafka-supervisor-reference.html/index.html
new file mode 100644
index 000000000..93c7ca670
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-supervisor-reference.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kafka-supervisor-reference">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kafka-supervisor-reference" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kafka-supervisor-reference' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kafka-supervisor-reference/index.html b/docs/26.0.0/development/extensions-core/kafka-supervisor-reference/index.html
new file mode 100644
index 000000000..ed3abf320
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kafka-supervisor-reference/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/kafka-supervisor-reference">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Kafka supervisor reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.or [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+By default, <code>isolation.level</code> is set to <code>read_committed</code>. If you use older versions of Kafka servers without transactions support or don't want Druid to consume only committed transactions, set <code>isolation.level</code> to <code>read_uncommitted</code>.</p><p>In some cases, you may need to fetch consumer properties at runtime. For example, when <code>bootstrap.servers</code> is not known upfront, or is not static. To enable SSL connections, you must provide [...]
+Use the <code>inputFormat</code> to specify the data format for Kafka indexing service unless you need a format only supported by the legacy <code>parser</code>.</p><p>Supported <code>inputFormat</code>s include:</p><ul><li><code>csv</code></li><li><code>delimited</code></li><li><code>json</code></li><li><code>kafka</code></li><li><code>avro_stream</code></li><li><code>avro_ocf</code></li><li><code>protobuf</code></li></ul><p>For more information, see <a href="/docs/26.0.0/ingestion/data [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kinesis-ingestion.html/index.html b/docs/26.0.0/development/extensions-core/kinesis-ingestion.html/index.html
new file mode 100644
index 000000000..7c35b3e6a
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kinesis-ingestion.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kinesis-ingestion">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kinesis-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kinesis-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kinesis-ingestion/index.html b/docs/26.0.0/development/extensions-core/kinesis-ingestion/index.html
new file mode 100644
index 000000000..36958cc54
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kinesis-ingestion/index.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/kinesis-ingestion">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Amazon Kinesis ingestion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<a href="/docs/26.0.0/development/extensions#loading-extensions">Including Extensions</a>).</p><blockquote><p>Before you deploy the Kinesis extension to production, read the <a href="#kinesis-known-issues">Kinesis known issues</a>.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="submitting-a-supervisor-spec">Submitting a Supervisor Spec<a href="#submitting-a-supervisor-spec" class="hash-link" aria-label="Direct link to Submitting a Supervisor Spec" title="Direct link t [...]
+Use the <code>inputFormat</code> to specify the data format for Kinesis indexing service unless you need a format only supported by the legacy <code>parser</code>.</p><p>Supported <code>inputFormat</code>s include:</p><ul><li><code>csv</code></li><li><code>delimited</code></li><li><code>json</code></li><li><code>avro_stream</code></li><li><code>avro_ocf</code></li><li><code>protobuf</code></li></ul><p>For more information, see <a href="/docs/26.0.0/ingestion/data-formats">Data formats</a [...]
+For all supervisor APIs, check <a href="/docs/26.0.0/operations/api-reference#supervisors">Supervisor APIs</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="aws-authentication">AWS Authentication<a href="#aws-authentication" class="hash-link" aria-label="Direct link to AWS Authentication" title="Direct link to AWS Authentication"></a></h3><p>To authenticate with AWS, you must provide your AWS access key and AWS secret key via <code>runtime.properties</code>, for example:</p><di [...]
+look for credentials set in environment variables, via <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html" target="_blank" rel="noopener noreferrer">Web Identity Token</a>, in the default profile configuration file, and from the EC2 instance
+profile provider (in this order).</p><p>To ingest data from Kinesis, ensure that the policy attached to your IAM role contains the necessary permissions.
+The permissions needed depend on the value of <code>useListShards</code>.</p><p>If the <code>useListShards</code> flag is set to <code>true</code>, you need following permissions:</p><ul><li><code>ListStreams</code>: required to list your data streams</li><li><code>Get*</code>: required for <code>GetShardIterator</code></li><li><code>GetRecords</code>: required to get data records from a data stream's shard</li><li><code>ListShards</code> : required to get the shards for a stream of [...]
+managed by the given supervisor. This includes the latest sequence numbers as reported by Kinesis. Unlike the Kafka
+Indexing Service, Kinesis reports lag metrics measured in time difference in milliseconds between the current sequence number and latest sequence number, rather than message count.</p><p>The status report also contains the supervisor's state and a list of recently thrown exceptions (reported as
+<code>recentErrors</code>, whose max size can be controlled using the <code>druid.supervisor.maxStoredExceptionEvents</code> configuration).
+There are two fields related to the supervisor's state - <code>state</code> and <code>detailedState</code>. The <code>state</code> field will always be
+one of a small number of generic states that are applicable to any type of supervisor, while the <code>detailedState</code> field
+will contain a more descriptive, implementation-specific state that may provide more insight into the supervisor's
+activities than the generic <code>state</code> field.</p><p>The list of possible <code>state</code> values are: <!-- -->[<code>PENDING</code>, <code>RUNNING</code>, <code>SUSPENDED</code>, <code>STOPPING</code>, <code>UNHEALTHY_SUPERVISOR</code>, <code>UNHEALTHY_TASKS</code>]</p><p>The list of <code>detailedState</code> values and their corresponding <code>state</code> mapping is as follows:</p><table><thead><tr><th>Detailed State</th><th>Corresponding State</th><th>Description</th></tr> [...]
+1) Fetch the list of shards from Kinesis and determine the starting sequence number for each shard (either based on the
+last processed sequence number if continuing, or starting from the beginning or ending of the stream if this is a new stream).
+2) Discover any running indexing tasks that are writing to the supervisor's datasource and adopt them if they match
+the supervisor's configuration, else signal them to stop.
+3) Send a status request to each supervised task to update our view of the state of the tasks under our supervision.
+4) Handle tasks that have exceeded <code>taskDuration</code> and should transition from the reading to publishing state.
+5) Handle tasks that have finished publishing and signal redundant replica tasks to stop.
+6) Handle tasks that have failed and clean up the supervisor's internal state.
+7) Compare the list of healthy tasks to the requested <code>taskCount</code> and <code>replicas</code> configurations and create additional tasks if required.</p><p>The <code>detailedState</code> field will show additional values (those marked with "first iteration only") the first time the
+supervisor executes this run loop after startup or after resuming from a suspension. This is intended to surface
+initialization-type issues, where the supervisor is unable to reach a stable state (perhaps because it can't connect to
+Kinesis, it can't read from the stream, or it can't communicate with existing tasks). Once the supervisor is stable -
+that is, once it has completed a full execution without encountering any issues - <code>detailedState</code> will show a <code>RUNNING</code>
+state until it is stopped, suspended, or hits a failure threshold and transitions to an unhealthy state.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="updating-existing-supervisors">Updating Existing Supervisors<a href="#updating-existing-supervisors" class="hash-link" aria-label="Direct link to Updating Existing Supervisors" title="Direct link to Updating Existing Supervisors"></a></h3><p><code>POST /druid/indexer/v1/supervisor</code> can be used to update existing supervisor spec.
+Calling this endpoint when there is already an existing supervisor for the same dataSource will cause:</p><ul><li>The running supervisor to signal its managed tasks to stop reading and begin publishing.</li><li>The running supervisor to exit.</li><li>A new supervisor to be created using the configuration provided in the request body. This supervisor will retain the
+existing publishing tasks and will create new tasks starting at the sequence numbers the publishing tasks ended on.</li></ul><p>Seamless schema migrations can thus be achieved by simply submitting the new schema using this endpoint.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="suspending-and-resuming-supervisors">Suspending and Resuming Supervisors<a href="#suspending-and-resuming-supervisors" class="hash-link" aria-label="Direct link to Suspending and Resuming Supervisors" titl [...]
+it will just ensure that no indexing tasks are running until the supervisor is resumed.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="resetting-supervisors">Resetting Supervisors<a href="#resetting-supervisors" class="hash-link" aria-label="Direct link to Resetting Supervisors" title="Direct link to Resetting Supervisors"></a></h3><p>The <code>POST /druid/indexer/v1/supervisor/<supervisorId>/reset</code> operation clears stored
+sequence numbers, causing the supervisor to start reading from either the earliest or
+latest sequence numbers in Kinesis (depending on the value of <code>useEarliestSequenceNumber</code>).
+After clearing stored sequence numbers, the supervisor kills and recreates active tasks,
+so that tasks begin reading from valid sequence numbers. </p><p>Use care when using this operation! Resetting the supervisor may cause Kinesis messages
+to be skipped or read twice, resulting in missing or duplicate data. </p><p>The reason for using this operation is to recover from a state in which the supervisor
+ceases operating due to missing sequence numbers. The indexing service keeps track of the latest
+persisted sequence number in order to provide exactly-once ingestion guarantees across
+tasks. </p><p>Subsequent tasks must start reading from where the previous task completed in
+order for the generated segments to be accepted. If the messages at the expected starting sequence numbers are
+no longer available in Kinesis (typically because the message retention period has elapsed or the topic was
+removed and re-created) the supervisor will refuse to start and in-flight tasks will fail. This operation
+enables you to recover from this condition. </p><p>Note that the supervisor must be running for this endpoint to be available.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="terminating-supervisors">Terminating Supervisors<a href="#terminating-supervisors" class="hash-link" aria-label="Direct link to Terminating Supervisors" title="Direct link to Terminating Supervisors"></a></h3><p>The <code>POST /druid/indexer/v1/supervisor/<supervisorId>/terminate</code> operation termin [...]
+all associated indexing tasks managed by this supervisor to immediately stop and begin
+publishing their segments. This supervisor will still exist in the metadata store and its history may be retrieved
+with the supervisor history API, but will not be listed in the 'get supervisors' API response nor can its configuration
+or status report be retrieved. The only way this supervisor can start again is by submitting a functioning supervisor
+spec to the create API.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="capacity-planning">Capacity Planning<a href="#capacity-planning" class="hash-link" aria-label="Direct link to Capacity Planning" title="Direct link to Capacity Planning"></a></h3><p>Kinesis indexing tasks run on MiddleManagers and are thus limited by the resources available in the MiddleManager
+cluster. In particular, you should make sure that you have sufficient worker capacity (configured using the
+<code>druid.worker.capacity</code> property) to handle the configuration in the supervisor spec. Note that worker capacity is
+shared across all types of indexing tasks, so you should plan your worker capacity to handle your total indexing load
+(e.g. batch processing, realtime tasks, merging tasks, etc.). If your workers run out of capacity, Kinesis indexing tasks
+will queue and wait for the next available worker. This may cause queries to return partial results but will not result
+in data loss (assuming the tasks run before Kinesis purges those sequence numbers).</p><p>A running task will normally be in one of two states: <em>reading</em> or <em>publishing</em>. A task will remain in reading state for
+<code>taskDuration</code>, at which point it will transition to publishing state. A task will remain in publishing state for as long
+as it takes to generate segments, push segments to deep storage, and have them be loaded and served by a Historical process
+(or until <code>completionTimeout</code> elapses).</p><p>The number of reading tasks is controlled by <code>replicas</code> and <code>taskCount</code>. In general, there will be <code>replicas * taskCount</code>
+reading tasks, the exception being if taskCount > {numKinesisShards} in which case {numKinesisShards} tasks will
+be used instead. When <code>taskDuration</code> elapses, these tasks will transition to publishing state and <code>replicas * taskCount</code>
+new reading tasks will be created. Therefore to allow for reading tasks and publishing tasks to run concurrently, there
+should be a minimum capacity of:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">workerCapacity = 2 * replicas * taskCount</span><br></span></code></pre><div class="buttonGroup__atx"><button type=" [...]
+In some circumstances, it is possible to have multiple sets of tasks publishing simultaneously. This would happen if the
+time-to-publish (generate segment, push to deep storage, loaded on Historical) > <code>taskDuration</code>. This is a valid
+scenario (correctness-wise) but requires additional worker capacity to support. In general, it is a good idea to have
+<code>taskDuration</code> be large enough that the previous set of tasks finishes publishing before the current set begins.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="supervisor-persistence">Supervisor Persistence<a href="#supervisor-persistence" class="hash-link" aria-label="Direct link to Supervisor Persistence" title="Direct link to Supervisor Persistence"></a></h3><p>When a supervisor spec is submitted via the <code>POST /druid/indexer/v1/supervisor</code> endpoint, it is [...]
+configured metadata database. There can only be a single supervisor per dataSource, and submitting a second spec for
+the same dataSource will overwrite the previous one.</p><p>When an Overlord gains leadership, either by being started or as a result of another Overlord failing, it will spawn
+a supervisor for each supervisor spec in the metadata database. The supervisor will then discover running Kinesis indexing
+tasks and will attempt to adopt them if they are compatible with the supervisor's configuration. If they are not
+compatible because they have a different ingestion spec or shard allocation, the tasks will be killed and the
+supervisor will create a new set of tasks. In this way, the supervisors are persistent across Overlord restarts and
+fail-overs.</p><p>A supervisor is stopped via the <code>POST /druid/indexer/v1/supervisor/<supervisorId>/terminate</code> endpoint. This places a
+tombstone marker in the database (to prevent the supervisor from being reloaded on a restart) and then gracefully
+shuts down the currently running supervisor. When a supervisor is shut down in this way, it will instruct its
+managed tasks to stop reading and begin publishing their segments immediately. The call to the shutdown endpoint will
+return after all tasks have been signalled to stop but before the tasks finish publishing their segments.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="schemaconfiguration-changes">Schema/Configuration Changes<a href="#schemaconfiguration-changes" class="hash-link" aria-label="Direct link to Schema/Configuration Changes" title="Direct link to Schema/Configuration Changes"></a></h3><p>Schema and configuration changes are handled by submitting the new supervisor spec via the same
+<code>POST /druid/indexer/v1/supervisor</code> endpoint used to initially create the supervisor. The Overlord will initiate a
+graceful shutdown of the existing supervisor which will cause the tasks being managed by that supervisor to stop reading
+and begin publishing their segments. A new supervisor will then be started which will create a new set of tasks that
+will start reading from the sequence numbers where the previous now-publishing tasks left off, but using the updated schema.
+In this way, configuration changes can be applied without requiring any pause in ingestion.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deployment-notes">Deployment Notes<a href="#deployment-notes" class="hash-link" aria-label="Direct link to Deployment Notes" title="Direct link to Deployment Notes"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="on-the-subject-of-segments">On the Subject of Segments<a href="#on-the-subject-of-segments" class="hash-link" aria-label [...]
+granular interval until maxRowsPerSegment, maxTotalRows or intermediateHandoffPeriod limit is reached, at this point a new shard
+for this segment granularity is created for further events. Kinesis Indexing Task also does incremental hand-offs which
+means that all the segments created by a task will not be held up till the task duration is over. As soon as maxRowsPerSegment,
+maxTotalRows or intermediateHandoffPeriod limit is hit, all the segments held by the task at that point in time will be handed-off
+and new set of segments will be created for further events. This means that the task can run for longer durations of time
+without accumulating old segments locally on Middle Manager processes and it is encouraged to do so.</p><p>Kinesis Indexing Service may still produce some small segments. Lets say the task duration is 4 hours, segment granularity
+is set to an HOUR and Supervisor was started at 9:10 then after 4 hours at 13:10, new set of tasks will be started and
+events for the interval 13:00 - 14:00 may be split across previous and new set of tasks. If you see it becoming a problem then
+one can schedule re-indexing tasks be run to merge segments together into new segments of an ideal size (in the range of ~500-700 MB per segment).
+Details on how to optimize the segment size can be found on <a href="/docs/26.0.0/operations/segment-optimization">Segment size optimization</a>.
+There is also ongoing work to support automatic segment compaction of sharded segments as well as compaction not requiring
+Hadoop (see <a href="https://github.com/apache/druid/pull/5102" target="_blank" rel="noopener noreferrer">here</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="determining-fetch-settings">Determining Fetch Settings<a href="#determining-fetch-settings" class="hash-link" aria-label="Direct link to Determining Fetch Settings" title="Direct link to Determining Fetch Settings"></a></h3><p>Kinesis indexing tasks fetch records using <code>fetchThreads</code> threads.
+If <code>fetchThreads</code> is higher than the number of Kinesis shards, the excess threads are unused.
+Each fetch thread fetches up to <code>recordsPerFetch</code> records at once from a Kinesis shard, with a delay between fetches
+of <code>fetchDelayMillis</code>.
+The records fetched by each thread are pushed into a shared queue of size <code>recordBufferSize</code>.
+The main runner thread for each task polls up to <code>maxRecordsPerPoll</code> records from the queue at once.</p><p>When using Kinesis Producer Library's aggregation feature (i.e. when <a href="#deaggregation"><code>deaggregate</code></a> is set),
+each of these parameters refers to aggregated records rather than individual records.</p><p>The default values for these parameters are:</p><ul><li><code>fetchThreads</code>: Twice the number of processors available to the task. The number of processors available to the task
+is the total number of processors on the server, divided by <code>druid.worker.capacity</code> (the number of task slots on that
+particular server).</li><li><code>fetchDelayMillis</code>: 0 (no delay between fetches).</li><li><code>recordsPerFetch</code>: 100 MB or an estimated 5% of available heap, whichever is smaller, divided by <code>fetchThreads</code>.
+For estimation purposes, Druid uses a figure of 10 KB for regular records and 1 MB for <a href="#deaggregation">aggregated records</a>.</li><li><code>recordBufferSize</code>: 100 MB or an estimated 10% of available heap, whichever is smaller.
+For estimation purposes, Druid uses a figure of 10 KB for regular records and 1 MB for <a href="#deaggregation">aggregated records</a>.</li><li><code>maxRecordsPerPoll</code>: 100 for regular records, 1 for <a href="#deaggregation">aggregated records</a>.</li></ul><p>Kinesis places the following restrictions on calls to fetch records:</p><ul><li>Each data record can be up to 1 MB in size.</li><li>Each shard can support up to 5 transactions per second for reads.</li><li>Each shard can rea [...]
+Kinesis tasks pause by <code>fetchDelayMillis</code> or 3 seconds, whichever is larger, and then attempt the call again.</p><p>In most cases, the default settings for fetch parameters are sufficient to achieve good performance without excessive
+memory usage. However, in some cases, you may need to adjust these parameters in order to more finely control fetch rate
+and memory usage. Optimal values depend on the average size of a record and the number of consumers you have reading
+from a given shard, which will be <code>replicas</code> unless you have other consumers also reading from this Kinesis stream.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="deaggregation">Deaggregation<a href="#deaggregation" class="hash-link" aria-label="Direct link to Deaggregation" title="Direct link to Deaggregation"></a></h2><p>The Kinesis indexing service supports de-aggregation of multiple rows packed into a single record by the Kinesis
+Producer Library's aggregate method for more efficient data transfer.</p><p>To enable this feature, set <code>deaggregate</code> to true in your <code>ioConfig</code> when submitting a supervisor spec.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="resharding">Resharding<a href="#resharding" class="hash-link" aria-label="Direct link to Resharding" title="Direct link to Resharding"></a></h2><p>When changing the shard count for a Kinesis stream, there will be a window of time [...]
+with an assignment of closed shards that have been fully read and to ensure a balanced distribution of active shards across tasks. </p><p>This window with early task shutdowns and possible task failures will conclude when:</p><ul><li>All closed shards have been fully read and the Kinesis ingestion tasks have published the data from those shards, committing the "closed" state to metadata storage</li><li>Any remaining tasks that had inactive shards in the assignment have been shu [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kubernetes.html/index.html b/docs/26.0.0/development/extensions-core/kubernetes.html/index.html
new file mode 100644
index 000000000..0eec4fc11
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kubernetes.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kubernetes">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kubernetes" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kubernetes' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/kubernetes/index.html b/docs/26.0.0/development/extensions-core/kubernetes/index.html
new file mode 100644
index 000000000..e7dce25ce
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/kubernetes/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/kubernetes">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Kubernetes | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/developme [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<code>druid.serverview.type=http</code>
+<code>druid.coordinator.loadqueuepeon.type=http</code>
+<code>druid.indexer.runner.type=httpRemote</code>
+<code>druid.discovery.type=k8s</code></p><p>For Node Discovery, Each Druid process running inside a pod "announces" itself by adding few "labels" and "annotations" in the pod spec. Druid process needs to be aware of pod name and namespace which it reads from environment variables <code>POD_NAME</code> and <code>POD_NAMESPACE</code>. These variable names can be changed, see configuration below. But in the end, each pod needs to have self pod name and namespac [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/lookups-cached-global.html/index.html b/docs/26.0.0/development/extensions-core/lookups-cached-global.html/index.html
new file mode 100644
index 000000000..24adbd08b
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/lookups-cached-global.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/lookups-cached-global">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/lookups-cached-global" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/lookups-cached-global' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/lookups-cached-global/index.html b/docs/26.0.0/development/extensions-core/lookups-cached-global/index.html
new file mode 100644
index 000000000..ea0eff534
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/lookups-cached-global/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/lookups-cached-global">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Globally Cached Lookups | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<a href="/docs/26.0.0/querying/lookups#configuration">dynamic configuration</a>.</p></blockquote><p>Globally cached lookups are appropriate for lookups which are not possible to pass at query time due to their size,
+or are not desired to be passed at query time because the data is to reside in and be handled by the Druid servers,
+and are small enough to reasonably populate in-memory. This usually means tens to tens of thousands of entries per lookup.</p><p>Globally cached lookups all draw from the same cache pool, allowing each process to have a fixed cache pool that can be used by cached lookups.</p><p>Globally cached lookups can be specified as part of the <a href="/docs/26.0.0/querying/lookups">cluster wide config for lookups</a> as a type of <code>cachedNamespace</code></p><div class="language-json codeBlockC [...]
+<code>druid-lookups-cached-global</code></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example-configuration">Example configuration<a href="#example-configuration" class="hash-link" aria-label="Direct link to Example configuration" title="Direct link to Example configuration"></a></h2><p>In a simple case where only one <a href="/docs/26.0.0/querying/lookups#dynamic-configuration">tier</a> exists (<code>realtime_customer2</code>) with one <code>cachedNamespace</code> lookup calle [...]
+setting namespaces (Broker, Peon, Historical)</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.lookup.namespace.cache.type</code></td><td>Specifies the type of caching to be used by the namespaces. May be one of <!-- -->[<code>offHeap</code>, <code>onHeap</code>]<!-- -->. <code>offHeap</code> uses a temporary file for off-heap storage of the namespace (memory mapped files). <code>onHeap</code> stores all cache on the heap i [...]
+a <code>pollPeriod</code> at the end of which time they poll the remote resource of interest for updates.</p><p><code>onHeap</code> uses <code>ConcurrentMap</code>s in the java heap, and thus affects garbage collection and heap sizing.
+<code>offHeap</code> uses an on-heap buffer and MapDB using memory-mapped files in the java temporary directory.
+So if total number of entries in the <code>cachedNamespace</code> is in excess of the buffer's configured capacity, the extra will be kept in memory as page cache, and paged in and out by general OS tunings.
+It's highly recommended that <code>druid.lookup.namespace.numBufferedEntries</code> is set when using <code>offHeap</code>, the value should be chosen from the range between 10% and 50% of the number of entries in the lookup.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="supported-lookups">Supported lookups<a href="#supported-lookups" class="hash-link" aria-label="Direct link to Supported lookups" title="Direct link to Supported lookups"></a></h2><p>For additional lookups, [...]
+<code>skipHeaderRows</code> to 2 and <code>hasHeaderRow</code> to true, Druid will skip the first two lines and then extract column information
+from the third line.</p><p><em>example input</em></p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">bar,something,foo</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
+<code>skipHeaderRows</code> to 2 and <code>hasHeaderRow</code> to true, Druid will skip the first two lines and then extract column information
+from the third line.</p><p><em>example input</em></p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">bar|something,1|foo</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="to [...]
+will not be included in the lookup.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="simplejson-lookupparsespec">simpleJson lookupParseSpec<a href="#simplejson-lookupparsespec" class="hash-link" aria-label="Direct link to simpleJson lookupParseSpec" title="Direct link to simpleJson lookupParseSpec"></a></h4><p>The <code>simpleJson</code> lookupParseSpec does not take any parameters. It is simply a line delimited JSON file where the field is the key, and the field's value is th [...]
+For Postgres, the connector JAR is already included.
+See the MySQL extension documentation for instructions to obtain <a href="/docs/26.0.0/development/extensions-core/mysql#installing-the-mysql-connector-library">MySQL</a> or <a href="/docs/26.0.0/development/extensions-core/mysql#alternative-installing-the-mariadb-connector-library">MariaDB</a> connector libraries.
+The connector JAR should reside in the classpath of Druid's main class loader.
+To add the connector JAR to the classpath, you can copy the downloaded file to <code>lib/</code> under the distribution root directory. Alternatively, create a symbolic link to the connector in the <code>lib</code> directory.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="introspection">Introspection<a href="#introspection" class="hash-link" aria-label="Direct link to Introspection" title="Direct link to Introspection"></a></h2><p>Globally cached lookups have introsp [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/mysql.html/index.html b/docs/26.0.0/development/extensions-core/mysql.html/index.html
new file mode 100644
index 000000000..ace091b35
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/mysql.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/mysql">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/mysql" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/mysql' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/mysql/index.html b/docs/26.0.0/development/extensions-core/mysql/index.html
new file mode 100644
index 000000000..edbc64f17
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/mysql/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/mysql">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">MySQL Metadata Store | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Refer to the following section for instructions on how to install this library.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="installing-the-mysql-connector-library">Installing the MySQL connector library<a href="#installing-the-mysql-connector-library" class="hash-link" aria-label="Direct link to Installing the MySQL connector library" title="Direct link to Installing the MySQL connector library"></a></h2><p>This extension can use Oracle's MySQL JDBC driver wh [...]
+install it separately. There are a few ways to obtain this library:</p><ul><li>It can be downloaded from the MySQL site at: <a href="https://dev.mysql.com/downloads/connector/j/" target="_blank" rel="noopener noreferrer">https://dev.mysql.com/downloads/connector/j/</a></li><li>It can be fetched from Maven Central at: <a href="https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar" target="_blank" rel="noopener noreferrer">https://repo1.maven.org/ [...]
+Community Server here:
+<a href="http://dev.mysql.com/downloads/mysql/" target="_blank" rel="noopener noreferrer">http://dev.mysql.com/downloads/mysql/</a>.</p></li></ul><p>This extension also supports using MariaDB server, <a href="https://mariadb.org/download/" target="_blank" rel="noopener noreferrer">https://mariadb.org/download/</a>, substituting for MariaDB in the following instructions where appropriate.</p><ol start="2"><li><p>Create a druid database and user</p><p>Connect to MySQL from the machine wher [...]
+with the location (host name and port) of the database.</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.extensions.loadList=["mysql-metadata-storage"]</spa [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/namespaced-lookup.html/index.html b/docs/26.0.0/development/extensions-core/namespaced-lookup.html/index.html
new file mode 100644
index 000000000..24adbd08b
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/namespaced-lookup.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/lookups-cached-global">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/lookups-cached-global" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/lookups-cached-global' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/orc.html/index.html b/docs/26.0.0/development/extensions-core/orc.html/index.html
new file mode 100644
index 000000000..57dd5d774
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/orc.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/orc">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/orc" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/orc' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/orc/index.html b/docs/26.0.0/development/extensions-core/orc/index.html
new file mode 100644
index 000000000..b4f989fbd
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/orc/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/orc">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">ORC Extension | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/develo [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+for <a href="/docs/26.0.0/ingestion/native-batch">native batch ingestion</a> and <a href="/docs/26.0.0/ingestion/hadoop">Hadoop batch ingestion</a>, respectively.
+Please see corresponding docs for details.</p><p>To use this extension, make sure to <a href="/docs/26.0.0/development/extensions#loading-extensions">include</a> <code>druid-orc-extensions</code> in the extensions load list.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="migration-from-contrib-extension">Migration from 'contrib' extension<a href="#migration-from-contrib-extension" class="hash-link" aria-label="Direct link to Migration from 'contrib' extension" [...]
+0.14.0-incubating. While this extension can index any data the 'contrib' extension could, the JSON spec for the
+ingestion task is <em>incompatible</em>, and will need modified to work with the newer 'core' extension.</p><p>To migrate to 0.15.0+:</p><ul><li>In <code>inputSpec</code> of <code>ioConfig</code>, <code>inputFormat</code> must be changed from <code>"org.apache.hadoop.hive.ql.io.orc.OrcNewInputFormat"</code> to
+<code>"org.apache.orc.mapreduce.OrcInputFormat"</code></li><li>The 'contrib' extension supported a <code>typeString</code> property, which provided the schema of the
+ORC file, of which was essentially required to have the types correct, but notably <em>not</em> the column names, which
+facilitated column renaming. In the 'core' extension, column renaming can be achieved with
+<a href="/docs/26.0.0/ingestion/ingestion-spec#flattenspec"><code>flattenSpec</code></a>. For example, <code>"typeString":"struct<time:string,name:string>"</code>
+with the actual schema <code>struct<_col0:string,_col1:string></code>, to preserve Druid schema would need replaced with:</li></ul><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property [...]
+flatten <code>OrcMap</code> columns with primitive types. This functionality has also been replaced with
+<a href="/docs/26.0.0/ingestion/ingestion-spec#flattenspec"><code>flattenSpec</code></a>. For example: <code>"mapFieldNameFormat": "<PARENT>_<CHILD>"</code>
+for a dimension <code>nestedData_dim1</code>, to preserve Druid schema could be replaced with</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property">"flattenSpec"</span><span cl [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/parquet.html/index.html b/docs/26.0.0/development/extensions-core/parquet.html/index.html
new file mode 100644
index 000000000..452d08d6e
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/parquet.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/parquet">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/parquet" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/parquet' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/parquet/index.html b/docs/26.0.0/development/extensions-core/parquet/index.html
new file mode 100644
index 000000000..97c12e61d
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/parquet/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/parquet">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Apache Parquet Extension | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Apache Parquet files.</p><p>Note: If using the <code>parquet-avro</code> parser for Apache Hadoop based indexing, <code>druid-parquet-extensions</code> depends on the <code>druid-avro-extensions</code> module, so be sure to
+<a href="/docs/26.0.0/development/extensions#loading-extensions">include both</a>.</p><p>The <code>druid-parquet-extensions</code> provides the <a href="/docs/26.0.0/ingestion/data-formats#parquet">Parquet input format</a>, the <a href="/docs/26.0.0/ingestion/data-formats#parquet-hadoop-parser">Parquet Hadoop parser</a>,
+and the <a href="/docs/26.0.0/ingestion/data-formats#parquet-avro-hadoop-parser">Parquet Avro Hadoop Parser</a> with <code>druid-avro-extensions</code>.
+The Parquet input format is available for <a href="/docs/26.0.0/ingestion/native-batch">native batch ingestion</a>
+and the other 2 parsers are for <a href="/docs/26.0.0/ingestion/hadoop">Hadoop batch ingestion</a>.
+Please see corresponding docs for details.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--dark_i4oU footer__logo" [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/postgresql.html/index.html b/docs/26.0.0/development/extensions-core/postgresql.html/index.html
new file mode 100644
index 000000000..31fec12cb
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/postgresql.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/postgresql">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/postgresql" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/postgresql' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/postgresql/index.html b/docs/26.0.0/development/extensions-core/postgresql/index.html
new file mode 100644
index 000000000..b640a38a4
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/postgresql/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/postgresql">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">PostgreSQL Metadata Store | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/2 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+postgresql permissions:</p><p>Create a druid user, enter <code>diurd</code> when prompted for the password.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">createuser druid -P</span>< [...]
+<code>createdb</code> commands with <code>sudo -u postgres</code> in order to gain proper
+permissions.</p></li><li><p>Configure your Druid metadata storage extension:</p><p>Add the following parameters to your Druid configuration, replacing <code><host></code>
+with the location (host name and port) of the database.</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.extensions.loadList=["postgresql-metadata-storage"] [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/protobuf.html/index.html b/docs/26.0.0/development/extensions-core/protobuf.html/index.html
new file mode 100644
index 000000000..902bd6504
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/protobuf.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/protobuf">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/protobuf" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/protobuf' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/protobuf/index.html b/docs/26.0.0/development/extensions-core/protobuf/index.html
new file mode 100644
index 000000000..92b86acbe
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/protobuf/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/protobuf">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Protobuf | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/development [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+for <a href="/docs/26.0.0/ingestion/#streaming">stream ingestion</a>. See corresponding docs for details.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example-load-protobuf-messages-from-kafka">Example: Load Protobuf messages from Kafka<a href="#example-load-protobuf-messages-from-kafka" class="hash-link" aria-label="Direct link to Example: Load Protobuf messages from Kafka" title="Direct link to Example: Load Protobuf messages from Kafka"></a></h2><p>This example demonstrates [...]
+Make sure these keys are properly configured for successful ingestion.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="when-using-a-descriptor-file-1">When using a descriptor file<a href="#when-using-a-descriptor-file-1" class="hash-link" aria-label="Direct link to When using a descriptor file" title="Direct link to When using a descriptor file"></a></h3><p>Important supervisor properties</p><ul><li><code>protoBytesDecoder.descriptor</code> for the descriptor file URL</li><li><cod [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/s3.html/index.html b/docs/26.0.0/development/extensions-core/s3.html/index.html
new file mode 100644
index 000000000..d99316bb7
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/s3.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/s3">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/s3" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/s3' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/s3/index.html b/docs/26.0.0/development/extensions-core/s3/index.html
new file mode 100644
index 000000000..33e8e07d7
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/s3/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/s3">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">S3-compatible | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/develo [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+and specify S3 paths in your <a href="/docs/26.0.0/ingestion/hadoop#inputspec"><code>inputSpec</code></a>.</p><p>To read objects from S3, you must supply <a href="#configuration">connection information</a> in configuration.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deep-storage">Deep Storage<a href="#deep-storage" class="hash-link" aria-label="Direct link to Deep Storage" title="Direct link to Deep Storage"></a></h3><p>S3-compatible deep storage means either AWS S3 or a comp [...]
+<code>druid.storage.sse.type</code> to a supported type of server-side encryption. The current supported types are:</p><ul><li>s3: <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption" target="_blank" rel="noopener noreferrer">Server-side encryption with S3-managed encryption keys</a></li><li>kms: <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption" target="_blank" rel="noopener noreferrer">Server-side encryption with AWS KMS–Managed [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/simple-client-sslcontext.html/index.html b/docs/26.0.0/development/extensions-core/simple-client-sslcontext.html/index.html
new file mode 100644
index 000000000..899e02bb5
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/simple-client-sslcontext.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/simple-client-sslcontext">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/simple-client-sslcontext" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/simple-client-sslcontext' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/simple-client-sslcontext/index.html b/docs/26.0.0/development/extensions-core/simple-client-sslcontext/index.html
new file mode 100644
index 000000000..d02e3d5df
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/simple-client-sslcontext/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/simple-client-sslcontext">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Simple SSLContext Provider Module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.or [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+that will be injected to be used with HttpClient that Druid processes use internally to communicate with each other. To learn more about
+Java's SSL support, please refer to <a href="http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html" target="_blank" rel="noopener noreferrer">this</a> guide.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.client.https.protocol</code></td><td>SSL protocol to use.</td><td><code>TLSv1.2</code></td><td>no</td></tr><tr><td><code>druid.client.https.trustStoreType</code></td> [...]
+values for the above mentioned configs among others provided by Java implementation.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/stats.html/index.html b/docs/26.0.0/development/extensions-core/stats.html/index.html
new file mode 100644
index 000000000..b6911f084
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/stats.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/stats">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/stats" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/stats' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/stats/index.html b/docs/26.0.0/development/extensions-core/stats/index.html
new file mode 100644
index 000000000..aa8d97418
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/stats/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/stats">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Stats aggregator | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+"Algorithms for computing the sample variance: analysis and recommendations"
+The American Statistician, 37 (1983) pp. 242--247.</p><p>variance = variance1 + variance2 + n/(m<em>(m+n)) </em> pow(((m/n)*t1 - t2),2)</p><p>where: </p><ul><li>variance is sum(x-avg^2) (this is actually n times the variance)
+and is updated at every step. </li><li>n is the count of elements in chunk1 </li><li>m is the count of elements in chunk2 </li><li>t1 is the sum of elements in chunk1</li><li>t2 is the sum of elements in chunk2</li></ul><p>This algorithm was proven to be numerically stable by J.L. Barlow in
+"Error analysis of a pairwise summation algorithm to compute sample variance"
+Numer. Math, 58 (1991) pp. 583--590</p><blockquote><p>As with all <a href="/docs/26.0.0/querying/sql-aggregations">aggregators</a>, the order of operations across segments is
+non-deterministic. This means that if this aggregator operates with an input type of "float" or "double", the result
+of the aggregation may not be precisely the same across multiple runs of the query.</p><p>To produce consistent results, round the variance to a fixed number of decimal places so that the results are
+precisely the same across query runs.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="pre-aggregating-variance-at-ingestion-time">Pre-aggregating variance at ingestion time<a href="#pre-aggregating-variance-at-ingestion-time" class="hash-link" aria-label="Direct link to Pre-aggregating variance at ingestion time" title="Direct link to Pre-aggregating variance at ingestion time"></a></h3><p>To use this feature, an "variance" aggregator must be included at ind [...]
+The ingestion aggregator can only apply to numeric values. If you use "variance"
+then any input rows missing the value will be considered to have a value of 0.</p><p>User can specify expected input type as one of "float", "double", "long", "variance" for ingestion, which is by default "float".</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/test-stats.html/index.html b/docs/26.0.0/development/extensions-core/test-stats.html/index.html
new file mode 100644
index 000000000..b503b8261
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/test-stats.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/test-stats">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/test-stats" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/test-stats' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions-core/test-stats/index.html b/docs/26.0.0/development/extensions-core/test-stats/index.html
new file mode 100644
index 000000000..0485f8c18
--- /dev/null
+++ b/docs/26.0.0/development/extensions-core/test-stats/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/test-stats">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Test Stats Aggregators | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Please note S.E. stands for standard error where</p><p>S.E. = sqrt{ p1 <em> ( 1 - p1 )/n1 + p2 </em> (1 - p2)/n2) }</p><p>(p1 – p2) is the observed difference between two sample proportions.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="zscore2sample-post-aggregator">zscore2sample post aggregator<a href="#zscore2sample-post-aggregator" class="hash-link" aria-label="Direct link to zscore2sample post aggregator" title="Direct link to zscore2sample post aggregator"></a></h3><ul><li [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions.html/index.html b/docs/26.0.0/development/extensions.html/index.html
new file mode 100644
index 000000000..47acde827
--- /dev/null
+++ b/docs/26.0.0/development/extensions.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/extensions/index.html b/docs/26.0.0/development/extensions/index.html
new file mode 100644
index 000000000..05dc71a19
--- /dev/null
+++ b/docs/26.0.0/development/extensions/index.html
@@ -0,0 +1,45 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Extensions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/developme [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+are commonly used to add support for deep storages (like HDFS and S3), metadata stores (like MySQL
+and PostgreSQL), new aggregators, new input formats, and so on.</p><p>Production clusters will generally use at least two extensions; one for deep storage and one for a
+metadata store. Many clusters will also use additional extensions.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-extensions">Core extensions<a href="#core-extensions" class="hash-link" aria-label="Direct link to Core extensions" title="Direct link to Core extensions"></a></h2><p>Core extensions are maintained by Druid committers.</p><table><thead><tr><th>Name</th><th>Description</th><th>Docs</th></tr></thead><tbody><tr><td>druid-avro-extensions</td><td>Support for data in A [...]
+If you'd like to take on maintenance for a community extension, please post on <a href="https://lists.apache.org/list.html?dev@druid.apache.org" target="_blank" rel="noopener noreferrer">dev@druid.apache.org</a> to let us know!</p><p>All of these community extensions can be downloaded using <a href="/docs/26.0.0/operations/pull-deps">pull-deps</a> while specifying a <code>-c</code> coordinate option to pull <code>org.apache.druid.extensions.contrib:{EXTENSION_NAME}:{DRUID_VERSION}</ [...]
+If we see a community extension actively supported by the community, we can promote it to core based on community feedback.</p><p>For information how to create your own extension, please see <a href="/docs/26.0.0/development/modules">here</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="loading-extensions">Loading extensions<a href="#loading-extensions" class="hash-link" aria-label="Direct link to Loading extensions" title="Direct link to Loading extensions"></a></h2><h3 class [...]
+See the <a href="/docs/26.0.0/development/extensions#core-extensions">list of extensions</a> for your options. You
+can load bundled extensions by adding their names to your common.runtime.properties
+<code>druid.extensions.loadList</code> property. For example, to load the <em>postgresql-metadata-storage</em> and
+<em>druid-hdfs-storage</em> extensions, use the configuration:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.extensions.loadList=["postgresql-metadata-storage", "druid-hdfs-s [...]
+one for a <a href="/docs/26.0.0/tutorials/cluster">clustered configuration</a>. Make sure you are updating the correct
+common.runtime.properties for your setup.</p></blockquote><blockquote><p>Because of licensing, the mysql-metadata-storage extension does not include the required MySQL JDBC driver. For instructions
+on how to install this library, see the <a href="/docs/26.0.0/development/extensions-core/mysql">MySQL extension page</a>.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-community-extensions">Loading community extensions<a href="#loading-community-extensions" class="hash-link" aria-label="Direct link to Loading community extensions" title="Direct link to Loading community extensions"></a></h3><p>You can also load community and third-party extensions not alrea [...]
+then install it into your <code>extensions</code> directory. You can download extensions from their distributors directly, or
+if they are available from Maven, the included <a href="/docs/26.0.0/operations/pull-deps">pull-deps</a> can download them for you. To use <em>pull-deps</em>,
+specify the full Maven coordinate of the extension in the form <code>groupId:artifactId:version</code>. For example,
+for the (hypothetical) extension <em>com.example:druid-example-extension:1.0.0</em>, run:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">java \</span><br></span><span class="token-line" style="col [...]
+<code>druid.extensions.loadList</code> in common.runtime.properties to instruct Druid to load the extension.</p><blockquote><p>Please make sure all the Extensions related configuration properties listed <a href="/docs/26.0.0/configuration/#extensions">here</a> are set correctly.</p></blockquote><blockquote><p>The Maven groupId for almost every <a href="/docs/26.0.0/development/extensions#community-extensions">community extension</a> is org.apache.druid.extensions.contrib. The artifactId [...]
+of the extension, and the version is the latest Druid stable version.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-extensions-from-the-classpath">Loading extensions from the classpath<a href="#loading-extensions-from-the-classpath" class="hash-link" aria-label="Direct link to Loading extensions from the classpath" title="Direct link to Loading extensions from the classpath"></a></h3><p>If you add your extension jar to the classpath at runtime, Druid will al [...]
+but it also means that you have to ensure that all dependency jars on the classpath are compatible. That is, Druid makes no provisions while using
+this method to maintain class loader isolation so you must make sure that the jars on your classpath are mutually compatible.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/configuration/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Configuration reference</div></a><a class="pagination-nav__link pagination-nav__link--next" href= [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/geo.html/index.html b/docs/26.0.0/development/geo.html/index.html
new file mode 100644
index 000000000..fe31710f4
--- /dev/null
+++ b/docs/26.0.0/development/geo.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/geo">
+ <link rel="canonical" href="/docs/26.0.0/development/geo" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/geo' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/geo/index.html b/docs/26.0.0/development/geo/index.html
new file mode 100644
index 000000000..a9b845de0
--- /dev/null
+++ b/docs/26.0.0/development/geo/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/geo">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Spatial filters | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/deve [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This document describes a feature that is only available in the native language.</p></blockquote><p>Apache Druid supports filtering spatially indexed columns based on an origin and a bound.</p><p>This topic explains how to ingest and query spatial filters.
+For information on other filters supported by Druid, see <a href="/docs/26.0.0/querying/filters">Query filters</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="spatial-indexing">Spatial indexing<a href="#spatial-indexing" class="hash-link" aria-label="Direct link to Spatial indexing" title="Direct link to Spatial indexing"></a></h2><p>Spatial indexing refers to ingesting data of a spatial data type, such as geometry or geography, into Druid.</p><p>Spatial dimensions are string [...]
+In the ingestion spec, you configure spatial dimensions in the <code>dimensionsSpec</code> object of the <code>dataSchema</code> component.</p><p>You can provide spatial dimensions in any of the <a href="/docs/26.0.0/ingestion/data-formats">data formats</a> supported by Druid.
+The following example shows an ingestion spec with a spatial dimension named <code>coordinates</code>, which is constructed from the input fields <code>x</code> and <code>y</code>:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" st [...]
+For general information on loading data in Druid, see <a href="/docs/26.0.0/ingestion/">Ingestion</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="spatial-filters">Spatial filters<a href="#spatial-filters" class="hash-link" aria-label="Direct link to Spatial filters" title="Direct link to Spatial filters"></a></h2><p>A <a href="/docs/26.0.0/querying/filters">filter</a> is a JSON object indicating which rows of data should be included in the computation for a query.
+You can filter on spatial structures, such as rectangles and polygons, using the spatial filter.</p><p>Spatial filters have the following structure:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class= [...]
+You can define rectangular, radius, and polygon filter bounds.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="rectangular">Rectangular<a href="#rectangular" class="hash-link" aria-label="Direct link to Rectangular" title="Direct link to Rectangular"></a></h4><p>The <code>rectangular</code> bound has the following elements:</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>minCoords</code></td><td>The list of minimum dimen [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/indexer.html/index.html b/docs/26.0.0/development/indexer.html/index.html
new file mode 100644
index 000000000..8e4899737
--- /dev/null
+++ b/docs/26.0.0/development/indexer.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/indexer">
+ <link rel="canonical" href="/docs/26.0.0/design/indexer" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/indexer' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/integrating-druid-with-other-technologies.html/index.html b/docs/26.0.0/development/integrating-druid-with-other-technologies.html/index.html
new file mode 100644
index 000000000..76e03e8bf
--- /dev/null
+++ b/docs/26.0.0/development/integrating-druid-with-other-technologies.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/javascript.html/index.html b/docs/26.0.0/development/javascript.html/index.html
new file mode 100644
index 000000000..824b2e033
--- /dev/null
+++ b/docs/26.0.0/development/javascript.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/javascript">
+ <link rel="canonical" href="/docs/26.0.0/development/javascript" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/javascript' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/javascript/index.html b/docs/26.0.0/development/javascript/index.html
new file mode 100644
index 000000000..ab0960faa
--- /dev/null
+++ b/docs/26.0.0/development/javascript/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/javascript">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">JavaScript programming guide | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/doc [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+without needing to write and deploy Druid extensions.</p><p>Druid uses the Mozilla Rhino engine at optimization level 9 to compile and execute JavaScript.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="security">Security<a href="#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security"></a></h2><p>Druid does not execute JavaScript functions in a sandbox, so they have full access to the machine. So JavaScript
+functions allow users to execute arbitrary code inside druid process. So, by default, JavaScript is disabled.
+However, on dev/staging environments or secured production environments you can enable those by setting
+the <a href="/docs/26.0.0/configuration/#javascript">configuration property</a>
+<code>druid.javascript.enabled = true</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="global-variables">Global variables<a href="#global-variables" class="hash-link" aria-label="Direct link to Global variables" title="Direct link to Global variables"></a></h2><p>Avoid using global variables. Druid may share the global scope between multiple threads, which can lead to
+unpredictable results if global variables are used.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="performance">Performance<a href="#performance" class="hash-link" aria-label="Direct link to Performance" title="Direct link to Performance"></a></h2><p>Simple JavaScript functions typically have a slight performance penalty to native speed. More complex JavaScript
+functions can have steeper performance penalties. Druid compiles JavaScript functions once on each data process per query.</p><p>You may need to pay special attention to garbage collection when making heavy use of JavaScript functions, especially
+garbage collection of the compiled classes themselves. Be sure to use a garbage collector configuration that supports
+timely collection of unused classes (this is generally easier on JDK8 with the Metaspace than it is on JDK7).</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="javascript-vs-native-extensions">JavaScript vs. Native Extensions<a href="#javascript-vs-native-extensions" class="hash-link" aria-label="Direct link to JavaScript vs. Native Extensions" title="Direct link to JavaScript vs. Native Extensions"></a></h2><p>Generally we recommend using JavaScript when security is not an issue, a [...]
+than performance or memory use. If security is an issue, or if performance and memory use are of the utmost importance,
+we recommend developing a native Druid extension.</p><p>In addition, native Druid extensions are more flexible than JavaScript functions. There are some kinds of extensions
+(like sketches) that must be written as native Druid extensions due to their need for custom data formats.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/development/modules"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Creating extensions</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/deve [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/kafka-simple-consumer-firehose.html/index.html b/docs/26.0.0/development/kafka-simple-consumer-firehose.html/index.html
new file mode 100644
index 000000000..91f91ffaa
--- /dev/null
+++ b/docs/26.0.0/development/kafka-simple-consumer-firehose.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/extensions-core/kafka-ingestion">
+ <link rel="canonical" href="/docs/26.0.0/development/extensions-core/kafka-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/extensions-core/kafka-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/modules.html/index.html b/docs/26.0.0/development/modules.html/index.html
new file mode 100644
index 000000000..a2c1e0610
--- /dev/null
+++ b/docs/26.0.0/development/modules.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/modules">
+ <link rel="canonical" href="/docs/26.0.0/development/modules" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/modules' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/modules/index.html b/docs/26.0.0/development/modules/index.html
new file mode 100644
index 000000000..1cbae6173
--- /dev/null
+++ b/docs/26.0.0/development/modules/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/modules">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Creating extensions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<code>org.apache.druid.tasklogs.TaskLog*</code> classes.</li><li>Add a new input source by extending <code>org.apache.druid.data.input.InputSource</code>.</li><li>Add a new input entity by extending <code>org.apache.druid.data.input.InputEntity</code>.</li><li>Add a new input source reader if necessary by extending <code>org.apache.druid.data.input.InputSourceReader</code>. You can use <code>org.apache.druid.data.input.impl.InputEntityIteratingReader</code> in most cases.</li><li>Add a n [...]
+and <code>org.apache.druid.query.aggregation.BufferAggregator</code>.</li><li>Add PostAggregators by extending <code>org.apache.druid.query.aggregation.PostAggregator</code>.</li><li>Add ExtractionFns by extending <code>org.apache.druid.query.extraction.ExtractionFn</code>.</li><li>Add Complex metrics by extending <code>org.apache.druid.segment.serde.ComplexMetricSerde</code>.</li><li>Add new Query types by extending <code>org.apache.druid.query.QueryRunnerFactory</code>, <code>org.apach [...]
+<code>org.apache.druid.query.Query</code>.</li><li>Add new Jersey resources by calling <code>Jerseys.addResource(binder, clazz)</code>.</li><li>Add new Jetty filters by extending <code>org.apache.druid.server.initialization.jetty.ServletFilterHolder</code>.</li><li>Add new secret providers by extending <code>org.apache.druid.metadata.PasswordProvider</code>.</li><li>Add new dynamic configuration providers by extending <code>org.apache.druid.metadata.DynamicConfigProvider</code>.</li><li> [...]
+The segment will be automatically rolled up to Historical note after ~20 seconds.
+In this way, you can validate both push (at realtime process) and pull (at Historical process) segments.</p><ul><li>DataSegmentPusher</li></ul><p>Wherever your data storage (cloud storage service, distributed file system, etc.) is, you should be able to see one new file: <code>index.zip</code> (<code>partitionNum_index.zip</code> for HDFS data storage) after your ingestion task ends.</p><ul><li>DataSegmentPuller</li></ul><p>After ~20 secs your ingestion task ends, you should be able to s [...]
+<code>InputSource</code> is to define where the input data is stored. <code>InputEntity</code> is to define how data can be read in parallel
+in <a href="/docs/26.0.0/ingestion/native-batch">native parallel indexing</a>.
+<code>InputSourceReader</code> defines how to read your new input source and you can simply use the provided <code>InputEntityIteratingReader</code> in most cases.</p><p>There is an example of this in the <code>druid-s3-extensions</code> module with the <code>S3InputSource</code> and <code>S3Entity</code>.</p><p>Adding an InputSource is done almost entirely through the Jackson Modules instead of Guice. Specifically, note the implementation</p><div class="language-java codeBlockContainer_ [...]
+<code>InputFormat</code> is to define how your data is formatted. <code>InputEntityReader</code> is to define how to parse your data and convert into Druid <code>InputRow</code>.</p><p>There is an example in the <code>druid-orc-extensions</code> module with the <code>OrcInputFormat</code> and <code>OrcReader</code>.</p><p>Adding an InputFormat is very similar to adding an InputSource. They operate purely through Jackson and thus should just be additions to the Jackson modules returned by [...]
+thus make sure all the necessary information required for fetching each password is supplied during object instantiation.
+In your implementation of <code>org.apache.druid.initialization.DruidModule</code>, <code>getJacksonModules</code> should look something like this -</p><div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class= [...]
+thus make sure all the necessary information required for fetching all information is supplied during object instantiation.
+In your implementation of <code>org.apache.druid.initialization.DruidModule</code>, <code>getJacksonModules</code> should look something like this -</p><div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class= [...]
+Druid users can add custom pluggable coordinator duties, which are not part of Core Druid, without modifying any Core Druid classes.
+Users can do this by writing their own custom coordinator duty implementing the interface <code>CoordinatorCustomDuty</code> and setting the <code>JsonTypeName</code>.
+Next, users will need to register their custom coordinator as subtypes in their Module's <code>DruidModule#getJacksonModules()</code>.
+Once these steps are done, user will be able to load their custom coordinator duty using the following properties:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.coordinator.dutyGroups=[< [...]
+The duties will be grouped into multiple groups as per the elements in list <code>druid.coordinator.dutyGroups</code>.
+All duties in the same group will have the same run period configured by <code>druid.coordinator.<GROUP_NAME>.period</code>.
+Currently, there is a single thread running the duties sequentially for each group. </p><p>For example, see <code>KillSupervisorsCustomDuty</code> for a custom coordinator duty implementation and the <code>custom-coordinator-duties</code>
+integration test group which loads <code>KillSupervisorsCustomDuty</code> using the configs set in <code>integration-tests/docker/environment-configs/test-groups/custom-coordinator-duties</code>.
+This config file adds the configs below to enable a custom coordinator duty.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.coordinator.dutyGroups=["cleanupMetadata"]</span><br></s [...]
+The custom coordinator duty <code>killSupervisors</code> also has a config called <code>retainDuration</code> which is set to 0 minute.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="routing-data-through-a-http-proxy-for-your-extension">Routing data through a HTTP proxy for your extension<a href="#routing-data-through-a-http-proxy-for-your-extension" class="hash-link" aria-label="Direct link to Routing data through a HTTP proxy for your extension" title="Direct link to Routing dat [...]
+For example, where <code>config</code> variable is the extension's HTTP config from step 1:</li></ol><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">final HttpClientConfig.Builder builder = HttpC [...]
+<a href="https://github.com/apache/druid/blob/master/distribution/pom.xml#L95" target="_blank" rel="noopener noreferrer">distribution/pom.xml</a></p><p>During <code>mvn install</code>, maven will install your extension to the local maven repository, and then call <a href="/docs/26.0.0/operations/pull-deps">pull-deps</a> to pull your extension from
+there. In the end, you should see your extension underneath <code>distribution/target/extensions</code> and within Druid tarball.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="managing-dependencies">Managing dependencies<a href="#managing-dependencies" class="hash-link" aria-label="Direct link to Managing dependencies" title="Direct link to Managing dependencies"></a></h3><p>Managing library collisions can be daunting for extensions which draw in commonly used libraries. Here is [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/overview.html/index.html b/docs/26.0.0/development/overview.html/index.html
new file mode 100644
index 000000000..7870e0de3
--- /dev/null
+++ b/docs/26.0.0/development/overview.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/overview">
+ <link rel="canonical" href="/docs/26.0.0/development/overview" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/overview' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/overview/index.html b/docs/26.0.0/development/overview/index.html
new file mode 100644
index 000000000..59d8f352d
--- /dev/null
+++ b/docs/26.0.0/development/overview/index.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/overview">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Developing on Apache Druid | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+a high level overview of the main components that make up Druid and the relevant classes to start from to learn the code.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="storage-format">Storage format<a href="#storage-format" class="hash-link" aria-label="Direct link to Storage format" title="Direct link to Storage format"></a></h2><p>Data in Druid is stored in a custom column format known as a <a href="/docs/26.0.0/design/segments">segment</a>. Segments are composed of
+different types of columns. <code>Column.java</code> and the classes that extend it is a great place to looking into the storage format.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-creation">Segment creation<a href="#segment-creation" class="hash-link" aria-label="Direct link to Segment creation" title="Direct link to Segment creation"></a></h2><p>Raw data is ingested in <code>IncrementalIndex.java</code>, and segments are created in <code>IndexMerger.java</code>.</p>< [...]
+Query runners often embed other query runners and each query runner adds on a layer of logic. A good starting point to trace
+the query logic is to start from <code>QueryResource.java</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="coordination">Coordination<a href="#coordination" class="hash-link" aria-label="Direct link to Coordination" title="Direct link to Coordination"></a></h2><p>Most of the coordination logic for Historical processes is on the Druid Coordinator. The starting point here is <code>DruidCoordinator.java</code>.
+Most of the coordination logic for (real-time) ingestion is in the Druid indexing service. The starting point here is <code>OverlordResource.java</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="real-time-ingestion">Real-time Ingestion<a href="#real-time-ingestion" class="hash-link" aria-label="Direct link to Real-time Ingestion" title="Direct link to Real-time Ingestion"></a></h2><p>Druid loads data through <code>FirehoseFactory.java</code> classes. Firehoses often wrap ot [...]
+query runners, each firehose adds a layer of logic, and the persist and hand-off logic is in <code>RealtimePlumber.java</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="hadoop-based-batch-ingestion">Hadoop-based Batch Ingestion<a href="#hadoop-based-batch-ingestion" class="hash-link" aria-label="Direct link to Hadoop-based Batch Ingestion" title="Direct link to Hadoop-based Batch Ingestion"></a></h2><p>The two main Hadoop indexing classes are <code>HadoopDruidDetermineConfi [...]
+segments to create, and <code>HadoopDruidIndexerJob.java</code>, which creates Druid segments.</p><p>At some point in the future, we may move the Hadoop ingestion code out of core Druid.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="internal-uis">Internal UIs<a href="#internal-uis" class="hash-link" aria-label="Direct link to Internal UIs" title="Direct link to Internal UIs"></a></h2><p>Druid currently has two internal UIs. One is for the Coordinator and one is for the Overlord. [...]
+<a href="https://druid.apache.org/libraries.html" target="_blank" rel="noopener noreferrer">Community and third-party libraries</a> page for links to existing client
+libraries.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/operations/use_sbt_to_build_fat_jar"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Content for build.sbt</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/development/modules"><div class="pagination-nav__sublabel">Next</div><div class="p [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/router.html/index.html b/docs/26.0.0/development/router.html/index.html
new file mode 100644
index 000000000..757da0ab6
--- /dev/null
+++ b/docs/26.0.0/development/router.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/router">
+ <link rel="canonical" href="/docs/26.0.0/design/router" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/router' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/select-query.html/index.html b/docs/26.0.0/development/select-query.html/index.html
new file mode 100644
index 000000000..6411cb5af
--- /dev/null
+++ b/docs/26.0.0/development/select-query.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/querying/select-query">
+ <link rel="canonical" href="/docs/26.0.0/querying/select-query" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/querying/select-query' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/versioning.html/index.html b/docs/26.0.0/development/versioning.html/index.html
new file mode 100644
index 000000000..f954a27b8
--- /dev/null
+++ b/docs/26.0.0/development/versioning.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/development/versioning">
+ <link rel="canonical" href="/docs/26.0.0/development/versioning" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/development/versioning' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/development/versioning/index.html b/docs/26.0.0/development/versioning/index.html
new file mode 100644
index 000000000..6f9e96d3b
--- /dev/null
+++ b/docs/26.0.0/development/versioning/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/versioning">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Versioning | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/developme [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/index.html b/docs/26.0.0/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion.html/index.html b/docs/26.0.0/ingestion.html/index.html
new file mode 100644
index 000000000..76e03e8bf
--- /dev/null
+++ b/docs/26.0.0/ingestion.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/automatic-compaction.html/index.html b/docs/26.0.0/ingestion/automatic-compaction.html/index.html
new file mode 100644
index 000000000..b571b6437
--- /dev/null
+++ b/docs/26.0.0/ingestion/automatic-compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/automatic-compaction">
+ <link rel="canonical" href="/docs/26.0.0/data-management/automatic-compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/automatic-compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/batch-ingestion.html/index.html b/docs/26.0.0/ingestion/batch-ingestion.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/ingestion/batch-ingestion.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/command-line-hadoop-indexer.html/index.html b/docs/26.0.0/ingestion/command-line-hadoop-indexer.html/index.html
new file mode 100644
index 000000000..ee2444119
--- /dev/null
+++ b/docs/26.0.0/ingestion/command-line-hadoop-indexer.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/hadoop">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/hadoop" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/hadoop' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/compaction.html/index.html b/docs/26.0.0/ingestion/compaction.html/index.html
new file mode 100644
index 000000000..b1c330f7f
--- /dev/null
+++ b/docs/26.0.0/ingestion/compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/compaction">
+ <link rel="canonical" href="/docs/26.0.0/data-management/compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/data-formats.html/index.html b/docs/26.0.0/ingestion/data-formats.html/index.html
new file mode 100644
index 000000000..92ffab092
--- /dev/null
+++ b/docs/26.0.0/ingestion/data-formats.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/data-formats">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/data-formats" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/data-formats' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/data-formats/index.html b/docs/26.0.0/ingestion/data-formats/index.html
new file mode 100644
index 000000000..6c2ec9da7
--- /dev/null
+++ b/docs/26.0.0/ingestion/data-formats/index.html
@@ -0,0 +1,108 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/data-formats">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Data formats | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ingesti [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+We welcome any contributions to new formats.</p><p>This page lists all default and core extension data formats supported by Druid.
+For additional data formats supported with community extensions,
+please see our <a href="/docs/26.0.0/development/extensions#community-extensions">community extensions list</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="formatting-data">Formatting data<a href="#formatting-data" class="hash-link" aria-label="Direct link to Formatting data" title="Direct link to Formatting data"></a></h2><p>The following samples show data formats that are natively supported in Druid:</p><p><em>JSON</em></p><div class="language-json codeBlockContainer_Ckt0 t [...]
+parsing data is less efficient than writing a native Java parser or using an external stream processor. We welcome contributions of new parsers.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="input-format">Input format<a href="#input-format" class="hash-link" aria-label="Direct link to Input format" title="Direct link to Input format"></a></h2><p>You can use the <code>inputFormat</code> field to specify the data format for your input data.</p><blockquote><p><code>inputFormat</cod [...]
+If your data is formatted in some format not listed in this section, please consider using the Parser instead.</p><p>All forms of Druid ingestion require some form of schema object. The format of the data to be ingested is specified using the <code>inputFormat</code> entry in your <a href="/docs/26.0.0/ingestion/ingestion-spec#ioconfig"><code>ioConfig</code></a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="json">JSON<a href="#json" class="hash-link" aria-label="Direct link to J [...]
+may need to migrate schemas in the future, consider one of the other decoders, all of which use a message header that
+allows the parser to identify the proper Avro schema for reading records.</p></blockquote><p>This decoder can be used if all the input events can be read using the same schema. In this case, specify the schema in the input task JSON itself, as described below.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scroll [...]
+first 1 byte is version and must always be 1.
+next 4 bytes are integer schema ID serialized using big-endian byte order.
+remaining bytes contain serialized avro message.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="schemarepo-based-avro-bytes-decoder">SchemaRepo Based Avro Bytes Decoder<a href="#schemarepo-based-avro-bytes-decoder" class="hash-link" aria-label="Direct link to SchemaRepo Based Avro Bytes Decoder" title="Direct link to SchemaRepo Based Avro Bytes Decoder"></a></h5><p>This Avro bytes decoder first extracts <code>subject</code> and <code>id</code> from the input message bytes, and th [...]
+For details, see the Schema Registry <a href="http://docs.confluent.io/current/schema-registry/docs/" target="_blank" rel="noopener noreferrer">documentation</a> and <a href="https://github.com/confluentinc/schema-registry" target="_blank" rel="noopener noreferrer">repository</a>.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>String</td><td>Set value to <code>schema_registry</code>.</td><td>no</td></tr><tr><t [...]
+and <a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Kinesis indexing service</a>.
+Consider using the <a href="#input-format">input format</a> instead for these types of ingestion.</p></blockquote><p>This section lists all default and core extension parsers.
+For community extension parsers, please see our <a href="/docs/26.0.0/development/extensions#community-extensions">community extensions list</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="string-parser">String Parser<a href="#string-parser" class="hash-link" aria-label="Direct link to String Parser" title="Direct link to String Parser"></a></h3><p><code>string</code> typed parsers operate on text based inputs that can be split into individual records by newlines.
+Each line can be further parsed using <a href="#parsespec"><code>parseSpec</code></a>.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>String</td><td>Set value to <code>string</code> for most cases. Otherwise use <code>hadoopyString</code> for Hadoop indexing.</td><td>yes</td></tr><tr><td>parseSpec</td><td>JSON Object</td><td>Specifies the format, timestamp, and dimensions of the data.</td><td>yes</td></tr></tb [...]
+The <code>inputFormat</code> of <code>inputSpec</code> in <code>ioConfig</code> must be set to <code>"org.apache.druid.data.input.avro.AvroValueInputFormat"</code>.
+You may want to set Avro reader's schema in <code>jobProperties</code> in <code>tuningConfig</code>,
+e.g.: <code>"avro.schema.input.value.path": "/path/to/your/schema.avsc"</code> or
+<code>"avro.schema.input.value": "your_schema_JSON_object"</code>.
+If the Avro reader's schema is not set, the schema in Avro object container file will be used.
+See <a href="http://avro.apache.org/docs/1.7.7/spec.html#Schema+Resolution" target="_blank" rel="noopener noreferrer">Avro specification</a> for more information.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>String</td><td>Set value to <code>avro_hadoop</code>.</td><td>yes</td></tr><tr><td>parseSpec</td><td>JSON Object</td><td>Specifies the timestamp and dimensions of the data. Should be an "avro" [...]
+field types, which can be used to read nested Avro records. The "jq" and "tree" field type is not currently supported
+for Avro.</p><p>For example, using Avro Hadoop parser with custom reader's schema file:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</ [...]
+please read <a href="/docs/26.0.0/development/extensions-core/orc#migration-from-contrib-extension">Migration from 'contrib' extension</a> carefully.</p></blockquote><p>This parser is for <a href="/docs/26.0.0/ingestion/hadoop">Hadoop batch ingestion</a>.
+The <code>inputFormat</code> of <code>inputSpec</code> in <code>ioConfig</code> must be set to <code>"org.apache.orc.mapreduce.OrcInputFormat"</code>.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>String</td><td>Set value to <code>orc</code>.</td><td>yes</td></tr><tr><td>parseSpec</td><td>JSON Object</td><td>Specifies the timestamp and dimensions of the data (<code>timeAndDims</code> and <code>orc</ [...]
+If no <code>flattenSpec</code> is specified, <code>useFieldDiscovery</code> will be enabled by default. Specifying a <code>dimensionSpec</code> is
+optional if <code>useFieldDiscovery</code> is enabled: if a <code>dimensionSpec</code> is supplied, the list of <code>dimensions</code> it defines will be
+the set of ingested dimensions, if missing the discovered fields will make up the list.</p><p><code>timeAndDims</code> parse spec must specify which fields will be extracted as dimensions through the <code>dimensionSpec</code>.</p><p><a href="https://orc.apache.org/docs/types.html" target="_blank" rel="noopener noreferrer">All column types</a> are supported, with the exception of <code>union</code> types. Columns of
+<code>list</code> type, if filled with primitives, may be used as a multi-value dimension, or specific elements can be extracted with
+<code>flattenSpec</code> expressions. Likewise, primitive fields may be extracted from <code>map</code> and <code>struct</code> types in the same manner.
+Auto field discovery will automatically create a string dimension for every (non-timestamp) primitive or <code>list</code> of
+primitives, as well as any flatten expressions defined in the <code>flattenSpec</code>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="hadoop-job-properties">Hadoop job properties<a href="#hadoop-job-properties" class="hash-link" aria-label="Direct link to Hadoop job properties" title="Direct link to Hadoop job properties"></a></h4><p>Like most Hadoop jobs, the best outcomes will add <code>"mapreduce.job.user.classpath.first": "true"</code> or
+<code>"mapreduce.job.classloader": "true"</code> to the <code>jobProperties</code> section of <code>tuningConfig</code>. Note that it is likely if using
+<code>"mapreduce.job.classloader": "true"</code> that you will need to set <code>mapreduce.job.classloader.system.classes</code> to include
+<code>-org.apache.hadoop.hive.</code> to instruct Hadoop to load <code>org.apache.hadoop.hive</code> classes from the application jars instead
+of system jars, e.g.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">...</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span cla [...]
+<code>orc-mapreduce</code> library, which provides some classes under the <code>org.apache.hadoop.hive</code> package. If instead using the
+setting <code>"mapreduce.job.user.classpath.first": "true"</code>, then this will not be an issue.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="orc-parser-orc-parsespec-auto-field-discovery-flatten-expressions"><code>orc</code> parser, <code>orc</code> parseSpec, auto field di [...]
+The <code>inputFormat</code> of <code>inputSpec</code> in <code>ioConfig</code> must be set to <code>org.apache.druid.data.input.parquet.DruidParquetInputFormat</code>.</p><p>The Parquet Hadoop Parser supports auto field discovery and flattening if provided with a
+<a href="#flattenspec"><code>flattenSpec</code></a> with the <code>parquet</code> <code>parseSpec</code>. Parquet nested list and map
+<a href="https://github.com/apache/parquet-format/blob/master/LogicalTypes.md" target="_blank" rel="noopener noreferrer">logical types</a> <em>should</em> operate correctly with
+JSON path expressions for all supported types.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>String</td><td>Set value to <code>parquet</code>.</td><td>yes</td></tr><tr><td>parseSpec</td><td>JSON Object</td><td>Specifies the timestamp and dimensions of the data, and optionally, a flatten spec. Valid parseSpec formats are <code>timeAndDims</code> and <code>parquet</code>.</td><td>yes</td></tr><tr><td>binaryAsSt [...]
+a format should not be supplied. When the format is UTF8 (String), either <code>auto</code> or a explicitly defined
+<a href="http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat" target="_blank" rel="noopener noreferrer">format</a> is required.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="parquet-hadoop-parser-vs-parquet-avro-hadoop-parser">Parquet Hadoop Parser vs Parquet Avro Hadoop Parser<a href="#parquet-hadoop-parser-vs-parquet-avro-hadoop-parser" class="hash-link" aria-label="Direct link to Parquet Hadoop Parser vs Parquet Avro Hadoop Parser" title="Direct link to P [...]
+differences are:</p><ul><li>The Parquet Hadoop Parser uses a simple conversion while the Parquet Avro Hadoop Parser
+converts Parquet data into avro records first with the <code>parquet-avro</code> library and then
+parses avro data using the <code>druid-avro-extensions</code> module to ingest into Druid.</li><li>The Parquet Hadoop Parser sets a hadoop job property
+<code>parquet.avro.add-list-element-records</code> to <code>false</code> (which normally defaults to <code>true</code>), in order to 'unwrap' primitive
+list elements into multi-value dimensions.</li><li>The Parquet Hadoop Parser supports <code>int96</code> Parquet values, while the Parquet Avro Hadoop Parser does not.
+There may also be some subtle differences in the behavior of JSON path expression evaluation of <code>flattenSpec</code>.</li></ul><p>Based on those differences, we suggest using the Parquet Hadoop Parser over the Parquet Avro Hadoop Parser
+to allow ingesting data beyond the schema constraints of Avro conversion.
+However, the Parquet Avro Hadoop Parser was the original basis for supporting the Parquet format, and as such it is a bit more mature.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="examples-1">Examples<a href="#examples-1" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="parquet-parser-parquet-parsespec"><code>parquet</code> parser, <code>parquet</code> parseSpec<a href="#parquet-pa [...]
+Parquet files. See <a href="#parquet-hadoop-parser-vs-parquet-avro-hadoop-parser">Parquet Hadoop Parser vs Parquet Avro Hadoop Parser</a>
+for the differences between those parsers.</p></blockquote><blockquote><p>You need to include both the <a href="/docs/26.0.0/development/extensions-core/parquet"><code>druid-parquet-extensions</code></a>
+<!-- -->[<code>druid-avro-extensions</code>]<!-- --> as extensions to use the Parquet Avro Hadoop Parser.</p></blockquote><p>The Parquet Avro Hadoop Parser is for <a href="/docs/26.0.0/ingestion/hadoop">Hadoop batch ingestion</a>.
+This parser first converts the Parquet data into Avro records, and then parses them to ingest into Druid.
+The <code>inputFormat</code> of <code>inputSpec</code> in <code>ioConfig</code> must be set to <code>org.apache.druid.data.input.parquet.DruidParquetAvroInputFormat</code>.</p><p>The Parquet Avro Hadoop Parser supports auto field discovery and flattening if provided with a
+<a href="#flattenspec"><code>flattenSpec</code></a> with the <code>avro</code> <code>parseSpec</code>. Parquet nested list and map
+<a href="https://github.com/apache/parquet-format/blob/master/LogicalTypes.md" target="_blank" rel="noopener noreferrer">logical types</a> <em>should</em> operate correctly with
+JSON path expressions for all supported types. This parser sets a hadoop job property
+<code>parquet.avro.add-list-element-records</code> to <code>false</code> (which normally defaults to <code>true</code>), in order to 'unwrap' primitive
+list elements into multi-value dimensions.</p><p>Note that the <code>int96</code> Parquet value type is not supported with this parser.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>String</td><td>Set value to <code>parquet-avro</code>.</td><td>yes</td></tr><tr><td>parseSpec</td><td>JSON Object</td><td>Specifies the timestamp and dimensions of the data, and optionally, a flatten spec. Should be <code>avro</co [...]
+a format should not be supplied. When the format is UTF8 (String), either <code>auto</code> or
+an explicitly defined <a href="http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat" target="_blank" rel="noopener noreferrer">format</a> is required.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="example">Example<a href="#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example"></a></h4><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div [...]
+field types, which can be used to read nested Avro records. The "jq" and "tree" field type is not currently supported for Avro.</p><p>For example, using Avro stream parser with schema repo Avro bytes decoder:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class=" [...]
+more details and examples.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="protobuf-bytes-decoder">Protobuf Bytes Decoder<a href="#protobuf-bytes-decoder" class="hash-link" aria-label="Direct link to Protobuf Bytes Decoder" title="Direct link to Protobuf Bytes Decoder"></a></h4><p>If <code>type</code> is not included, the <code>protoBytesDecoder</code> defaults to <code>schema_registry</code>.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="file-based-protobuf-bytes-decoder" [...]
+For details, see the Schema Registry <a href="http://docs.confluent.io/current/schema-registry/docs/" target="_blank" rel="noopener noreferrer">documentation</a> and <a href="https://github.com/confluentinc/schema-registry" target="_blank" rel="noopener noreferrer">repository</a>.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>String</td><td>Set value to <code>schema_registry</code>.</td><td>yes</td></tr><tr>< [...]
+and <a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Kinesis indexing service</a>.
+Consider using the <a href="#input-format">input format</a> instead for these types of ingestion.</p></blockquote><p>ParseSpecs serve two purposes:</p><ul><li>The String Parser use them to determine the format (i.e., JSON, CSV, TSV) of incoming rows.</li><li>All Parsers use them to determine the timestamp and dimensions of incoming rows.</li></ul><p>If <code>format</code> is not included, the parseSpec defaults to <code>tsv</code>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="js [...]
+Instead, you can set the <code>hasHeaderRow</code> field to true, which makes Druid automatically extract the column information from the header.
+Otherwise, you must set the <code>columns</code> field and ensure that field must match the columns of your input data in the same order.</p><p>Also, you can skip some header rows by setting <code>skipHeaderRows</code> in your parseSpec. If both <code>skipHeaderRows</code> and <code>hasHeaderRow</code> options are set,
+<code>skipHeaderRows</code> is first applied. For example, if you set <code>skipHeaderRows</code> to 2 and <code>hasHeaderRow</code> to true, Druid will
+skip the first two lines and then extract column information from the third line.</p><p>Note that <code>hasHeaderRow</code> and <code>skipHeaderRows</code> are effective only for non-Hadoop batch index tasks. Other types of index
+tasks will fail with an exception.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="other-csv-ingestion-tasks">Other CSV Ingestion Tasks<a href="#other-csv-ingestion-tasks" class="hash-link" aria-label="Direct link to Other CSV Ingestion Tasks" title="Direct link to Other CSV Ingestion Tasks"></a></h4><p>The <code>columns</code> field must be included and and ensure that the order of the fields matches the columns of your input data in the same order.</p><h3 class="anchor anchorWit [...]
+the delimiter is a tab, so this will load TSV.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>format</td><td>String</td><td><code>tsv</code></td><td>yes</td></tr><tr><td>timestampSpec</td><td>JSON Object</td><td>Specifies the column and format of the timestamp.</td><td>yes</td></tr><tr><td>dimensionsSpec</td><td>JSON Object</td><td>Specifies the dimensions of the data.</td><td>yes</td></tr><tr><td>delimiter</td><td>String< [...]
+Instead, you can set the <code>hasHeaderRow</code> field to true, which makes Druid automatically extract the column information from the header.
+Otherwise, you must set the <code>columns</code> field and ensure that field must match the columns of your input data in the same order.</p><p>Also, you can skip some header rows by setting <code>skipHeaderRows</code> in your parseSpec. If both <code>skipHeaderRows</code> and <code>hasHeaderRow</code> options are set,
+<code>skipHeaderRows</code> is first applied. For example, if you set <code>skipHeaderRows</code> to 2 and <code>hasHeaderRow</code> to true, Druid will
+skip the first two lines and then extract column information from the third line.</p><p>Note that <code>hasHeaderRow</code> and <code>skipHeaderRows</code> are effective only for non-Hadoop batch index tasks. Other types of index
+tasks will fail with an exception.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="other-tsv-delimited-ingestion-tasks">Other TSV (Delimited) Ingestion Tasks<a href="#other-tsv-delimited-ingestion-tasks" class="hash-link" aria-label="Direct link to Other TSV (Delimited) Ingestion Tasks" title="Direct link to Other TSV (Delimited) Ingestion Tasks"></a></h4><p>The <code>columns</code> field must be included and and ensure that the order of the fields matches the columns of your inpu [...]
+columns names ("column_1", "column2", ... "column_n") will be assigned. Ensure that your column names include all your dimensions.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="javascript-parsespec">JavaScript ParseSpec<a href="#javascript-parsespec" class="hash-link" aria-label="Direct link to JavaScript ParseSpec" title="Direct link to JavaScript ParseSpec"></a></h3><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism [...]
+This means any flattening or parsing multi-dimensional values must be done here.</p><blockquote><p>JavaScript-based functionality is disabled by default. Please refer to the Druid <a href="/docs/26.0.0/development/javascript">JavaScript programming guide</a> for guidelines about using Druid's JavaScript functionality, including instructions on how to enable it.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="timeanddims-parsespec">TimeAndDims ParseSpec<a href="#ti [...]
+handle all formatting decisions on their own, without using the ParseSpec.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>format</td><td>String</td><td><code>timeAndDims</code></td><td>yes</td></tr><tr><td>timestampSpec</td><td>JSON Object</td><td>Specifies the column and format of the timestamp.</td><td>yes</td></tr><tr><td>dimensionsSpec</td><td>JSON Object</td><td>Specifies the dimensions of the data.</td><td>yes</td></ [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/data-management.html/index.html b/docs/26.0.0/ingestion/data-management.html/index.html
new file mode 100644
index 000000000..7f8a89d37
--- /dev/null
+++ b/docs/26.0.0/ingestion/data-management.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/">
+ <link rel="canonical" href="/docs/26.0.0/data-management/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/data-model.html/index.html b/docs/26.0.0/ingestion/data-model.html/index.html
new file mode 100644
index 000000000..4796a413d
--- /dev/null
+++ b/docs/26.0.0/ingestion/data-model.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/data-model">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/data-model" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/data-model' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/data-model/index.html b/docs/26.0.0/ingestion/data-model/index.html
new file mode 100644
index 000000000..2b1082b28
--- /dev/null
+++ b/docs/26.0.0/ingestion/data-model/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/data-model">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Druid data model | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ing [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+for time-based <a href="/docs/26.0.0/data-management/">data management operations</a> such as dropping time chunks, overwriting time chunks, and time-based retention rules.</p><p>Druid parses the primary timestamp based on the <a href="/docs/26.0.0/ingestion/ingestion-spec#timestampspec"><code>timestampSpec</code></a> configuration at ingestion time. Regardless of the source field for the primary timestamp, Druid always stores the timestamp in the <code>__time</code> column in your Druid [...]
+<a href="/docs/26.0.0/ingestion/ingestion-spec#granularityspec"><code>granularitySpec</code></a>. If you have more than one timestamp column, you can store the others as
+<a href="/docs/26.0.0/ingestion/schema-design#secondary-timestamps">secondary timestamps</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="dimensions">Dimensions<a href="#dimensions" class="hash-link" aria-label="Direct link to Dimensions" title="Direct link to Dimensions"></a></h2><p>Dimensions are columns that Druid stores "as-is". You can use dimensions for any purpose. For example, you can group, filter, or apply aggregators to dimensions at query time when necess [...]
+dimensions like a set of columns to ingest. The dimensions behave exactly as you would expect from any database that does not support a rollup feature.</p><p>At ingestion time, you configure dimensions in the <a href="/docs/26.0.0/ingestion/ingestion-spec#dimensionsspec"><code>dimensionsSpec</code></a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="metrics">Metrics<a href="#metrics" class="hash-link" aria-label="Direct link to Metrics" title="Direct link to Metrics"></a></h2><p> [...]
+has the following benefits:</p><p>Rollup is a form of aggregation that collapses dimensions while aggregating the values in the metrics, that is, it collapses rows but retains its summary information."</p><ul><li><p><a href="/docs/26.0.0/ingestion/rollup">Rollup</a> is a form of aggregation that combines multiple rows with the same timestamp value and dimension values. For example, the <a href="/docs/26.0.0/tutorials/tutorial-rollup">rollup tutorial</a> demonstrates using rollup to [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/delete-data.html/index.html b/docs/26.0.0/ingestion/delete-data.html/index.html
new file mode 100644
index 000000000..f7d9f7d96
--- /dev/null
+++ b/docs/26.0.0/ingestion/delete-data.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/delete">
+ <link rel="canonical" href="/docs/26.0.0/data-management/delete" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/delete' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/faq.html/index.html b/docs/26.0.0/ingestion/faq.html/index.html
new file mode 100644
index 000000000..f9ad44d30
--- /dev/null
+++ b/docs/26.0.0/ingestion/faq.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/faq">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/faq" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/faq' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/faq/index.html b/docs/26.0.0/ingestion/faq/index.html
new file mode 100644
index 000000000..0b4954a25
--- /dev/null
+++ b/docs/26.0.0/ingestion/faq/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/faq">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Ingestion troubleshooting FAQ | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<code>forceMetadataRefresh=true</code> and <code>interval=<INTERVAL_OF_INGESTED_DATA></code> once.
+(Note: <code>forceMetadataRefresh=true</code> refreshes Coordinator's metadata cache of all datasources. This can be a heavy operation in terms of the load on the metadata store but is necessary to make sure that we verify all the latest segments' load status)
+If there are segments not yet loaded, continue to step 4, otherwise you can now query the data.</li><li>Repeatedly poll the <a href="/docs/26.0.0/operations/api-reference#segment-loading-by-datasource">Segment Loading by Datasource API</a> (<code>/druid/coordinator/v1/datasources/{dataSourceName}/loadstatus</code>) with
+<code>forceMetadataRefresh=false</code> and <code>interval=<INTERVAL_OF_INGESTED_DATA></code>.
+Continue polling until all segments are loaded. Once all segments are loaded you can now query the data.
+Note that this workflow only guarantees that the segments are available at the time of the <a href="/docs/26.0.0/operations/api-reference#segment-loading-by-datasource">Segment Loading by Datasource API</a> call. Segments can still become missing because of historical process failures or any other reasons afterward.</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="i-dont-see-my-druid-segments-on-my-historical-processes">I don't see my Druid segments on my Historical proce [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/firehose.html/index.html b/docs/26.0.0/ingestion/firehose.html/index.html
new file mode 100644
index 000000000..301cee4be
--- /dev/null
+++ b/docs/26.0.0/ingestion/firehose.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/migrate-from-firehose">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/migrate-from-firehose" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/migrate-from-firehose' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/flatten-json.html/index.html b/docs/26.0.0/ingestion/flatten-json.html/index.html
new file mode 100644
index 000000000..ca4ed071a
--- /dev/null
+++ b/docs/26.0.0/ingestion/flatten-json.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/ingestion-spec">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/ingestion-spec" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/ingestion-spec' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/hadoop-vs-native-batch.html/index.html b/docs/26.0.0/ingestion/hadoop-vs-native-batch.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/ingestion/hadoop-vs-native-batch.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/hadoop.html/index.html b/docs/26.0.0/ingestion/hadoop.html/index.html
new file mode 100644
index 000000000..ee2444119
--- /dev/null
+++ b/docs/26.0.0/ingestion/hadoop.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/hadoop">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/hadoop" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/hadoop' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/hadoop/index.html b/docs/26.0.0/ingestion/hadoop/index.html
new file mode 100644
index 000000000..90e7de198
--- /dev/null
+++ b/docs/26.0.0/ingestion/hadoop/index.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/hadoop">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Hadoop-based ingestion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+instance of a Druid <a href="/docs/26.0.0/design/overlord">Overlord</a>. Please refer to our <a href="/docs/26.0.0/ingestion/#batch">Hadoop-based vs. native batch comparison table</a> for
+comparisons between Hadoop-based, native batch (simple), and native batch (parallel) ingestion.</p><p>To run a Hadoop-based ingestion task, write an ingestion spec as specified below. Then POST it to the
+<a href="/docs/26.0.0/operations/api-reference#tasks"><code>/druid/indexer/v1/task</code></a> endpoint on the Overlord, or use the
+<code>bin/post-index-task</code> script included with Druid.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="tutorial">Tutorial<a href="#tutorial" class="hash-link" aria-label="Direct link to Tutorial" title="Direct link to Tutorial"></a></h2><p>This page contains reference documentation for Hadoop-based ingestion.
+For a walk-through instead, check out the <a href="/docs/26.0.0/tutorials/tutorial-batch-hadoop">Loading from Apache Hadoop</a> tutorial.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="task-syntax">Task syntax<a href="#task-syntax" class="hash-link" aria-label="Direct link to Task syntax" title="Direct link to Task syntax"></a></h2><p>A sample task is shown below:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-backgroun [...]
+what it should contain.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ioconfig"><code>ioConfig</code><a href="#ioconfig" class="hash-link" aria-label="Direct link to ioconfig" title="Direct link to ioconfig"></a></h2><p>This field is required.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>String</td><td>This should always be 'hadoop'.</td><td>yes</td></tr><tr><td>inputSpec</td><td>Object</t [...]
+To do so, you need to install the necessary library under Druid's classpath in <em>all MiddleManager or Indexer processes</em>.
+For S3, you can run the below command to install the <a href="https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/" target="_blank" rel="noopener noreferrer">Hadoop AWS module</a>.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class=" [...]
+your S3 paths in the inputSpec with the below job properties.
+For more configurations, see the <a href="https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/" target="_blank" rel="noopener noreferrer">Hadoop AWS module</a>.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"> [...]
+under <code>${DRUID_HOME}/hadoop-dependencies</code> in <em>all MiddleManager or Indexer processes</em>.
+Once you install the GCS Connector jar in all MiddleManager and Indexer processes, you can put
+your Google Cloud Storage paths in the inputSpec with the below job properties.
+For more configurations, see the <a href="https://github.com/GoogleCloudPlatform/bigdata-interop/blob/master/gcs/INSTALL.md#configure-hadoop" target="_blank" rel="noopener noreferrer">instructions to configure Hadoop</a>,
+<a href="https://github.com/GoogleCloudDataproc/hadoop-connectors/blob/v2.0.0/gcs/conf/gcs-core-default.xml" target="_blank" rel="noopener noreferrer">GCS core default</a>
+and <a href="https://github.com/GoogleCloudPlatform/bdutil/blob/master/conf/hadoop2/gcs-core-template.xml" target="_blank" rel="noopener noreferrer">GCS core template</a>.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><sp [...]
+Note that, "useNewAggs" must be set to default value false to support delta-ingestion.</p><table><thead><tr><th>Field</th><th>Type</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>children</td><td>Array of JSON objects</td><td>List of JSON objects containing other inputSpecs.</td><td>yes</td></tr></tbody></table><p>For example:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e [...]
+POST <code>/druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments?full</code>
+Request Body: <!-- -->[interval1, interval2,...]<!-- --> for example <!-- -->["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000", "2012-01-05T00:00:00.000/2012-01-07T00:00:00.000"]</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="tuningconfig"><code>tuningConfig</code><a href="#tuningconfig" class="hash-link" aria-label="Direct link to tuningconfig" title="Direct link to tuningconfig"></a></h2><p>The tuningConfig is optional and default parameters will be used if [...]
+to avoid class loading issues. See the <a href="/docs/26.0.0/operations/other-hadoop">working with different Hadoop versions documentation</a>
+for more details.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="partitionsspec"><code>partitionsSpec</code><a href="#partitionsspec" class="hash-link" aria-label="Direct link to partitionsspec" title="Direct link to partitionsspec"></a></h2><p>Segments are always partitioned based on timestamp (according to the granularitySpec) and may be further partitioned in
+some other way depending on partition type. Druid supports two types of partitioning strategies: <code>hashed</code> (based on the
+hash of all dimensions in each row), and <code>single_dim</code> (based on ranges of a single dimension).</p><p>Hashed partitioning is recommended in most cases, as it will improve indexing performance and create more uniformly
+sized data segments relative to single-dimension partitioning.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="hash-based-partitioning">Hash-based partitioning<a href="#hash-based-partitioning" class="hash-link" aria-label="Direct link to Hash-based partitioning" title="Direct link to Hash-based partitioning"></a></h3><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex" [...]
+according to the hash of all dimensions in each row. The number of segments is determined automatically based on the
+cardinality of the input set and a target partition size.</p><p>The configuration options are:</p><table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>Type of partitionSpec to be used.</td><td>"hashed"</td></tr><tr><td>targetRowsPerSegment</td><td>Target number of rows to include in a partition, should be a number that targets segments of 500MB<!-- -->~<!-- -->1GB. Defaults to 5000000 if <code>numShards</code> is not set. [...]
+values are first serialized into a byte array as a whole, and then the partition function is applied to compute hash of
+the byte array.
+Druid currently supports only one partition function.</p><table><thead><tr><th>name</th><th>description</th></tr></thead><tbody><tr><td><code>murmur3_32_abs</code></td><td>Applies an absolute value function to the result of <a href="https://guava.dev/releases/16.0/api/docs/com/google/common/hash/Hashing.html#murmur3_32()" target="_blank" rel="noopener noreferrer"><code>murmur3_32</code></a>.</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="single-dimension-rang [...]
+into contiguous ranges. Each segment will contain all rows with values of that dimension in that range. For example,
+your segments may be partitioned on the dimension "host" using the ranges "a.example.com" to "f.example.com" and
+"f.example.com" to "z.example.com". By default, the dimension to use is determined automatically, although you can
+override it with a specific dimension.</p><p>The configuration options are:</p><table><thead><tr><th>Field</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>Type of partitionSpec to be used.</td><td>"single_dim"</td></tr><tr><td>targetRowsPerSegment</td><td>Target number of rows to include in a partition, should be a number that targets segments of 500MB<!-- -->~<!-- -->1GB.</td><td>yes</td></tr><tr><td>targetPartitionSize</td><td>Deprecated. Ren [...]
+from S3. To do this:</p><ul><li>Create a persistent, <a href="http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-plan-longrunning-transient" target="_blank" rel="noopener noreferrer">long-running cluster</a>.</li><li>When creating your cluster, enter the following configuration. If you're using the wizard, this
+should be in advanced mode under "Edit software settings":</li></ul><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">classification=yarn-site,properties=[mapreduce.reduce.memory.mb=6144,mapre [...]
+<a href="/docs/26.0.0/tutorials/cluster#hadoop">Configure for connecting to Hadoop</a> using the XML files from <code>/etc/hadoop/conf</code>
+on your EMR master.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kerberized-hadoop-clusters">Kerberized Hadoop clusters<a href="#kerberized-hadoop-clusters" class="hash-link" aria-label="Direct link to Kerberized Hadoop clusters" title="Direct link to Kerberized Hadoop clusters"></a></h2><p>By default druid can use the existing TGT kerberos ticket available in local kerberos key cache.
+Although TGT ticket has a limited life cycle,
+therefore you need to call <code>kinit</code> command periodically to ensure validity of TGT ticket.
+To avoid this extra external cron job script calling <code>kinit</code> periodically,
+you can provide the principal name and keytab location and druid will do the authentication transparently at startup and job launching time.</p><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.hadoop.security.kerberos.principal</code></td><td><code>druid@EXAMPLE.COM</code></td><td>Principal user name</td><td>empty</td></tr><tr><td><code>druid.hadoop.security.kerberos.keytab</code></td><td><code>/etc/sec [...]
+with Amazon-specific features such as S3 encryption and consistent views. If you need to use these
+features, you will need to make the Amazon EMR Hadoop JARs available to Druid through one of the
+mechanisms described in the <a href="#using-other-hadoop-distributions">Using other Hadoop distributions</a> section.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="using-other-hadoop-distributions">Using other Hadoop distributions<a href="#using-other-hadoop-distributions" class="hash-link" aria-label="Direct link to Using other Hadoop distributions" title="Direct link to Using other Hadoop distributions"></a></h2><p>Druid works out of the box with many Hadoop distributions.</p> [...]
+searching for a solution in the <a href="https://groups.google.com/forum/#!forum/druid-user" target="_blank" rel="noopener noreferrer">Druid user groups</a>, or reading the
+Druid <a href="/docs/26.0.0/operations/other-hadoop">Different Hadoop Versions</a> documentation.</p><a name="cli"></a><h2 class="anchor anchorWithStickyNavbar_LWe7" id="command-line-non-task-version">Command line (non-task) version<a href="#command-line-non-task-version" class="hash-link" aria-label="Direct link to Command line (non-task) version" title="Direct link to Command line (non-task) version"></a></h2><p>To run:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="- [...]
+you have to take caution to not override segments created by real-time processing (if you that a real-time pipeline set up).</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/ingestion/native-batch-firehose"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Firehose (deprecated)</div></a><a class="pagination-nav__link pagination-nav__lin [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/index.html b/docs/26.0.0/ingestion/index.html
new file mode 100644
index 000000000..97ad0085c
--- /dev/null
+++ b/docs/26.0.0/ingestion/index.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/index">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Ingestion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ingestion/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+your source system and stores it in data files called <a href="/docs/26.0.0/design/architecture#datasources-and-segments"><em>segments</em></a>.
+In general, segment files contain a few million rows each.</p><p>For most ingestion methods, the Druid <a href="/docs/26.0.0/design/middlemanager">MiddleManager</a> processes or the
+<a href="/docs/26.0.0/design/indexer">Indexer</a> processes load your source data. The sole exception is Hadoop-based ingestion, which
+uses a Hadoop MapReduce job on YARN.</p><p>During ingestion, Druid creates segments and stores them in <a href="/docs/26.0.0/dependencies/deep-storage">deep storage</a>. Historical nodes load the segments into memory to respond to queries. For streaming ingestion, the Middle Managers and indexers can respond to queries in real-time with arriving data. See the <a href="/docs/26.0.0/design/architecture#storage-design">Storage design</a> section of the Druid design documentation for more in [...]
+the best one for your situation. Each ingestion method supports its own set of source systems to pull from. For details
+about how each method works, as well as configuration properties specific to that method, check out its documentation
+page.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="streaming">Streaming<a href="#streaming" class="hash-link" aria-label="Direct link to Streaming" title="Direct link to Streaming"></a></h3><p>There are two available options for streaming ingestion. Streaming ingestion is controlled by a continuously-running
+supervisor.</p><table><thead><tr><th><strong>Method</strong></th><th><a href="/docs/26.0.0/development/extensions-core/kafka-ingestion">Kafka</a></th><th><a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Kinesis</a></th></tr></thead><tbody><tr><td><strong>Supervisor type</strong></td><td><code>kafka</code></td><td><code>kinesis</code></td></tr><tr><td><strong>How it works</strong></td><td>Druid reads directly from Apache Kafka.</td><td>Druid reads directly from Amazon [...]
+runs for the duration of the job.</p><table><thead><tr><th><strong>Method</strong></th><th><a href="/docs/26.0.0/ingestion/native-batch">Native batch</a></th><th><a href="/docs/26.0.0/multi-stage-query/">SQL</a></th><th><a href="/docs/26.0.0/ingestion/hadoop">Hadoop-based</a></th></tr></thead><tbody><tr><td><strong>Controller task type</strong></td><td><code>index_parallel</code></td><td><code>query_controller</code></td><td><code>index_hadoop</code></td></tr><tr><td><strong>How you subm [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/ingestion-spec.html/index.html b/docs/26.0.0/ingestion/ingestion-spec.html/index.html
new file mode 100644
index 000000000..ca4ed071a
--- /dev/null
+++ b/docs/26.0.0/ingestion/ingestion-spec.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/ingestion-spec">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/ingestion-spec" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/ingestion-spec' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/ingestion-spec/index.html b/docs/26.0.0/ingestion/ingestion-spec/index.html
new file mode 100644
index 000000000..ea171d116
--- /dev/null
+++ b/docs/26.0.0/ingestion/ingestion-spec/index.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/ingestion-spec">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Ingestion spec reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<a href="#timestampspec">primary timestamp</a>, <a href="#dimensionsspec">dimensions</a>, <a href="#metricsspec">metrics</a>, and <a href="#transformspec">transforms and filters</a> (if needed).</li><li><a href="#ioconfig"><code>ioConfig</code></a>, which tells Druid how to connect to the source system and how to parse data. For more information, see the
+documentation for each <a href="/docs/26.0.0/ingestion/#ingestion-methods">ingestion method</a>.</li><li><a href="#tuningconfig"><code>tuningConfig</code></a>, which controls various tuning parameters specific to each
+<a href="/docs/26.0.0/ingestion/#ingestion-methods">ingestion method</a>.</li></ul><p>Example ingestion spec for task type <code>index_parallel</code> (native batch):</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span cl [...]
+For more examples, refer to the documentation for each ingestion method.</p><p>You can also load data visually, without the need to write an ingestion spec, using the "Load data" functionality
+available in Druid's <a href="/docs/26.0.0/operations/web-console">web console</a>. Druid's visual data loader supports
+<a href="/docs/26.0.0/development/extensions-core/kafka-ingestion">Kafka</a>,
+<a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Kinesis</a>, and
+<a href="/docs/26.0.0/ingestion/native-batch">native batch</a> mode.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="dataschema"><code>dataSchema</code><a href="#dataschema" class="hash-link" aria-label="Direct link to dataschema" title="Direct link to dataschema"></a></h2><blockquote><p>The <code>dataSchema</code> spec has been changed in 0.17.0. The new spec is supported by all ingestion methods
+except for <em>Hadoop</em> ingestion. See the <a href="#legacy-dataschema-spec">Legacy <code>dataSchema</code> spec</a> for the old spec.</p></blockquote><p>The <code>dataSchema</code> is a holder for the following components:</p><ul><li><a href="#datasource">datasource name</a></li><li><a href="#timestampspec">primary timestamp</a></li><li><a href="#dimensionsspec">dimensions</a></li><li><a href="#metricsspec">metrics</a></li><li><a href="#transformspec">transforms and filters</a> (if n [...]
+<a href="/docs/26.0.0/design/architecture#datasources-and-segments">datasource</a> that data will be written to. An example
+<code>dataSource</code> is:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">"dataSource": "my-first-datasource"</span><br></span></code></pre><div class="buttonGroup__atx"><butt [...]
+configuring the <a href="/docs/26.0.0/ingestion/data-model#primary-timestamp">primary timestamp</a>. An example <code>timestampSpec</code> is:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">" [...]
+first <a href="/docs/26.0.0/ingestion/data-formats#flattenspec"><code>flattenSpec</code></a> (if any), then <a href="#timestampspec"><code>timestampSpec</code></a>, then <a href="#transformspec"><code>transformSpec</code></a>,
+and finally <a href="#dimensionsspec"><code>dimensionsSpec</code></a> and <a href="#metricsspec"><code>metricsSpec</code></a>. Keep this in mind when writing
+your ingestion spec.</p></blockquote><p>A <code>timestampSpec</code> can have the following components:</p><table><thead><tr><th>Field</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td>column</td><td>Input row field to read the primary timestamp from.<br><br>Regardless of the name of this input field, the primary timestamp will always be stored as a column named <code>__time</code> in your Druid datasource.</td><td>timestamp</td></tr><tr><td>format</td><td>Timestamp for [...]
+configuring <a href="/docs/26.0.0/ingestion/data-model#dimensions">dimensions</a>. </p><p>You can either manually specify the dimensions or take advantage of schema auto-discovery where you allow Druid to infer all or some of the schema for your data. This means that you don't have to explicitly specify your dimensions and their type. </p><p>To use schema auto-discovery, set <code>useSchemaDiscovery</code> to <code>true</code>. </p><p>Alternatively, you can use the string-based sche [...]
+first <a href="/docs/26.0.0/ingestion/data-formats#flattenspec"><code>flattenSpec</code></a> (if any), then <a href="#timestampspec"><code>timestampSpec</code></a>, then <a href="#transformspec"><code>transformSpec</code></a>,
+and finally <a href="#dimensionsspec"><code>dimensionsSpec</code></a> and <a href="#metricsspec"><code>metricsSpec</code></a>. Keep this in mind when writing
+your ingestion spec.</p></blockquote><p>A <code>dimensionsSpec</code> can have the following components:</p><table><thead><tr><th>Field</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>dimensions</code></td><td>A list of <a href="#dimension-objects">dimension names or objects</a>. You cannot include the same column in both <code>dimensions</code> and <code>dimensionExclusions</code>.<br><br>If <code>dimensions</code> and <code>spatialDimensions</code> are both nu [...]
+a <code>string</code> type dimension object with the given name, e.g. <code>"page"</code> is equivalent to <code>{"name": "page", "type": "string"}</code>.</p><p>Dimension objects can have the following components:</p><table><thead><tr><th>Field</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td>type</td><td>Either <code>auto</code>, <code>string</code>, <code>long</code>, <code>float</code>, <code>double</code>, or <code [...]
+schemaless dimension interpretation.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="metricsspec"><code>metricsSpec</code><a href="#metricsspec" class="hash-link" aria-label="Direct link to metricsspec" title="Direct link to metricsspec"></a></h3><p>The <code>metricsSpec</code> is located in <code>dataSchema</code> → <code>metricsSpec</code> and is a list of <a href="/docs/26.0.0/querying/aggregations">aggregators</a>
+to apply at ingestion time. This is most useful when <a href="/docs/26.0.0/ingestion/rollup">rollup</a> is enabled, since it's how you configure
+ingestion-time aggregation.</p><p>An example <code>metricsSpec</code> is:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">"metricsSpec": [</span><br></span><span class="token-line" style= [...]
+Druid does not do any ingestion-time aggregation, so there is little reason to include an ingestion-time aggregator). However,
+in some cases, it can still make sense to define metrics: for example, if you want to create a complex column as a way of
+pre-computing part of an <a href="/docs/26.0.0/querying/aggregations#approximate-aggregations">approximate aggregation</a>, this can only
+be done by defining a metric in a <code>metricsSpec</code>.</p></blockquote><h3 class="anchor anchorWithStickyNavbar_LWe7" id="granularityspec"><code>granularitySpec</code><a href="#granularityspec" class="hash-link" aria-label="Direct link to granularityspec" title="Direct link to granularityspec"></a></h3><p>The <code>granularitySpec</code> is located in <code>dataSchema</code> → <code>granularitySpec</code> and is responsible for configuring
+the following operations:</p><ol><li>Partitioning a datasource into <a href="/docs/26.0.0/design/architecture#datasources-and-segments">time chunks</a> (via <code>segmentGranularity</code>).</li><li>Truncating the timestamp, if desired (via <code>queryGranularity</code>).</li><li>Specifying which time chunks of segments should be created, for batch ingestion (via <code>intervals</code>).</li><li>Specifying whether ingestion-time <a href="/docs/26.0.0/ingestion/rollup">rollup</a> should b [...]
+records during ingestion time. It is optional. An example <code>transformSpec</code> is:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">"transformSpec": {</span><br></span><span class="t [...]
+first <a href="/docs/26.0.0/ingestion/data-formats#flattenspec"><code>flattenSpec</code></a> (if any), then <a href="#timestampspec"><code>timestampSpec</code></a>, then <a href="#transformspec"><code>transformSpec</code></a>,
+and finally <a href="#dimensionsspec"><code>dimensionsSpec</code></a> and <a href="#metricsspec"><code>metricsSpec</code></a>. Keep this in mind when writing
+your ingestion spec.</p></blockquote><h4 class="anchor anchorWithStickyNavbar_LWe7" id="transforms">Transforms<a href="#transforms" class="hash-link" aria-label="Direct link to Transforms" title="Direct link to Transforms"></a></h4><p>The <code>transforms</code> list allows you to specify a set of expressions to evaluate on top of input data. Each transform has a
+"name" which can be referred to by your <code>dimensionsSpec</code>, <code>metricsSpec</code>, etc.</p><p>If a transform has the same name as a field in an input row, then it will shadow the original field. Transforms that
+shadow fields may still refer to the fields they shadow. This can be used to transform a field "in-place".</p><p>Transforms do have some limitations. They can only refer to fields present in the actual input rows; in particular,
+they cannot refer to other transforms. And they cannot remove fields, only add them. However, they can shadow a field
+with another field containing all nulls, which will act similarly to removing the field.</p><p>Druid currently includes one kind of built-in transform, the expression transform. It has the following syntax:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="to [...]
+first <a href="/docs/26.0.0/ingestion/data-formats#flattenspec"><code>flattenSpec</code></a> (if any), then <a href="#timestampspec"><code>timestampSpec</code></a>, then <a href="#transformspec"><code>transformSpec</code></a>,
+and finally <a href="#dimensionsspec"><code>dimensionsSpec</code></a> and <a href="#metricsspec"><code>metricsSpec</code></a>. Keep this in mind when writing
+your ingestion spec.</p></blockquote><h4 class="anchor anchorWithStickyNavbar_LWe7" id="filter">Filter<a href="#filter" class="hash-link" aria-label="Direct link to Filter" title="Direct link to Filter"></a></h4><p>The <code>filter</code> conditionally filters input rows during ingestion. Only rows that pass the filter will be
+ingested. Any of Druid's standard <a href="/docs/26.0.0/querying/filters">query filters</a> can be used. Note that within a
+<code>transformSpec</code>, the <code>transforms</code> are applied before the <code>filter</code>, so the filter can refer to a transform.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="legacy-dataschema-spec">Legacy <code>dataSchema</code> spec<a href="#legacy-dataschema-spec" class="hash-link" aria-label="Direct link to legacy-dataschema-spec" title="Direct link to legacy-dataschema-spec"></a></h3><blockquote><p>The <code>dataSchema</code> spec has been changed in 0.17.0. The [...]
+except for <em>Hadoop</em> ingestion. See <a href="#dataschema"><code>dataSchema</code></a> for the new spec.</p></blockquote><p>The legacy <code>dataSchema</code> spec has below two more components in addition to the ones listed in the <a href="#dataschema"><code>dataSchema</code></a> section above.</p><ul><li><a href="#parser-deprecated">input row parser</a>, <a href="#flattenspec">flattening of nested data</a> (if needed)</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="par [...]
+items related to parsing input records. The <code>parser</code> is deprecated and it is highly recommended to use <code>inputFormat</code> instead.
+For details about <code>inputFormat</code> and supported <code>parser</code> types, see the <a href="/docs/26.0.0/ingestion/data-formats">"Data formats" page</a>.</p><p>For details about major components of the <code>parseSpec</code>, refer to their subsections:</p><ul><li><a href="#timestampspec"><code>timestampSpec</code></a>, responsible for configuring the <a href="/docs/26.0.0/ingestion/data-model#primary-timestamp">primary timestamp</a>.</li><li><a href="#dimensionsspec"> [...]
+bridging the gap between potentially nested input data (such as JSON, Avro, etc) and Druid's flat data model.
+See <a href="/docs/26.0.0/ingestion/data-formats#flattenspec">Flatten spec</a> for more details.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ioconfig"><code>ioConfig</code><a href="#ioconfig" class="hash-link" aria-label="Direct link to ioconfig" title="Direct link to ioconfig"></a></h2><p>The <code>ioConfig</code> influences how data is read from a source system, such as Apache Kafka, Amazon S3, a mounted
+filesystem, or any other supported source system. The <code>inputFormat</code> property applies to all
+<a href="/docs/26.0.0/ingestion/#ingestion-methods">ingestion method</a> except for Hadoop ingestion. The Hadoop ingestion still
+uses the <a href="#parser-deprecated"><code>parser</code></a> in the legacy <code>dataSchema</code>.
+The rest of <code>ioConfig</code> is specific to each individual ingestion method.
+An example <code>ioConfig</code> to read JSON data is:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property">"ioConfig"</span><span class="token operator" style="color:rgb(137, [...]
+properties apply to all <a href="/docs/26.0.0/ingestion/#ingestion-methods">ingestion methods</a>, but most are specific to each individual
+ingestion method. An example <code>tuningConfig</code> that sets all of the shared, common properties to their defaults
+is:</p><div class="language-plaintext codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-plaintext codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">"tuningConfig": {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> & [...]
+<a href="/docs/26.0.0/ingestion/#ingestion-methods">ingestion method</a> for details.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/ingestion/partitioning"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Partitioning</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/ingestion/schema-design"><div [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/ingestion.html/index.html b/docs/26.0.0/ingestion/ingestion.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/ingestion/ingestion.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/locking-and-priority.html/index.html b/docs/26.0.0/ingestion/locking-and-priority.html/index.html
new file mode 100644
index 000000000..a5fd3f312
--- /dev/null
+++ b/docs/26.0.0/ingestion/locking-and-priority.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/tasks">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/tasks" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/tasks' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/migrate-from-firehose.html/index.html b/docs/26.0.0/ingestion/migrate-from-firehose.html/index.html
new file mode 100644
index 000000000..301cee4be
--- /dev/null
+++ b/docs/26.0.0/ingestion/migrate-from-firehose.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/migrate-from-firehose">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/migrate-from-firehose" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/migrate-from-firehose' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/migrate-from-firehose/index.html b/docs/26.0.0/ingestion/migrate-from-firehose/index.html
new file mode 100644
index 000000000..5d397e46d
--- /dev/null
+++ b/docs/26.0.0/ingestion/migrate-from-firehose/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/migrate-from-firehose">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Migrate from firehose to input source ingestion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://d [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+You can check the format of your new ingestion file against the <a href="#example-ingestion-spec-after-migration">migrated example</a> below.</li><li>Test the new ingestion spec with a temporary data source.</li><li>Once you've successfully ingested sample data with the new spec, stop firehose ingestion and switch to the new spec.</li></ol><p>When the transition is complete, you can upgrade Druid to the latest version. See the <a href="https://druid.apache.org/downloads.html" target [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/misc-tasks.html/index.html b/docs/26.0.0/ingestion/misc-tasks.html/index.html
new file mode 100644
index 000000000..a5fd3f312
--- /dev/null
+++ b/docs/26.0.0/ingestion/misc-tasks.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/tasks">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/tasks" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/tasks' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native-batch-firehose.html/index.html b/docs/26.0.0/ingestion/native-batch-firehose.html/index.html
new file mode 100644
index 000000000..e8a0ae6fa
--- /dev/null
+++ b/docs/26.0.0/ingestion/native-batch-firehose.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/native-batch-firehose">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/native-batch-firehose" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/native-batch-firehose' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native-batch-firehose/index.html b/docs/26.0.0/ingestion/native-batch-firehose/index.html
new file mode 100644
index 000000000..2bdb548a9
--- /dev/null
+++ b/docs/26.0.0/ingestion/native-batch-firehose/index.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/native-batch-firehose">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Native batch ingestion with firehose (Deprecated) | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https:/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This firehose is <em>splittable</em> and can be used by the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>.
+Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p><p>Sample spec:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
+shardSpecs are not specified, and, in this case, caching can be useful. Prefetching is preferred when direct scan of objects is slow.
+Note that prefetching or caching isn't that useful in the Parallel task.</p><table><thead><tr><th>property</th><th>description</th><th>default</th><th>required?</th></tr></thead><tbody><tr><td>type</td><td>This should be <code>static-s3</code>.</td><td>None</td><td>yes</td></tr><tr><td>uris</td><td>JSON array of URIs where s3 files to be ingested are located.</td><td>None</td><td><code>uris</code> or <code>prefixes</code> must be set</td></tr><tr><td>prefixes</td><td>JSON array of U [...]
+Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p><p>Sample spec:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
+shardSpecs are not specified, and, in this case, caching can be useful. Prefetching is preferred when direct scan of objects is slow.
+Note that prefetching or caching isn't that useful in the Parallel task.</p><table><thead><tr><th>property</th><th>description</th><th>default</th><th>required?</th></tr></thead><tbody><tr><td>type</td><td>This should be <code>static-google-blobstore</code>.</td><td>None</td><td>yes</td></tr><tr><td>blobs</td><td>JSON array of Google Blobs.</td><td>None</td><td>yes</td></tr><tr><td>maxCacheCapacityBytes</td><td>Maximum size of the cache space in bytes. 0 means disabling cache. Cache [...]
+This firehose is <em>splittable</em> and can be used by the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>.
+Since each split represents an HDFS file, each worker task of <code>index_parallel</code> will read files.</p><p>Sample spec:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property">" [...]
+<code>intervals</code> are not specified, and, in this case, caching can be useful. Prefetching is preferred when direct scanning
+of files is slow.
+Note that prefetching or caching isn't that useful in the Parallel task.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td>type</td><td>This should be <code>hdfs</code>.</td><td>none (required)</td></tr><tr><td>paths</td><td>HDFS paths. Can be either a JSON array or comma-separated string of paths. Wildcards like <code>*</code> are supported in these paths.</td><td>none (required)</td></tr><tr><td>maxCacheCapacityBytes</td><td>Maxi [...]
+However, if you want to ingest from cloud storage, consider using the service-specific input source for your data storage.
+If you want to use a non-hdfs protocol with the HDFS firehose, you need to include the protocol you want
+in <code>druid.ingestion.hdfs.allowedProtocols</code>. See <a href="/docs/26.0.0/configuration/#hdfs-input-source">HDFS firehose security configuration</a> for more details.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="localfirehose">LocalFirehose<a href="#localfirehose" class="hash-link" aria-label="Direct link to LocalFirehose" title="Direct link to LocalFirehose"></a></h2><p>This Firehose can be used to read the data from files on local disk, and is mainly intended for proof [...]
+This Firehose is <em>splittable</em> and can be used by <a href="/docs/26.0.0/ingestion/native-batch">native parallel index tasks</a>.
+Since each split represents a file in this Firehose, each worker task of <code>index_parallel</code> will read a file.
+A sample local Firehose spec is shown below:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span [...]
+This Firehose is <em>splittable</em> and can be used by <a href="/docs/26.0.0/ingestion/native-batch">native parallel index tasks</a>.
+Since each split represents a file in this Firehose, each worker task of <code>index_parallel</code> will read a file.
+A sample HTTP Firehose spec is shown below:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span> [...]
+The <code>http</code> and <code>https</code> protocols are allowed by default. See <a href="/docs/26.0.0/configuration/#http-input-source">HTTP firehose security configuration</a> for more details.</p><p>The below configurations can be optionally used if the URIs specified in the spec require a Basic Authentication Header.
+Omitting these fields from your spec will result in HTTP requests with no Basic Authentication Header.</p><table><thead><tr><th>property</th><th>description</th><th>default</th></tr></thead><tbody><tr><td>httpAuthenticationUsername</td><td>Username to use for authentication with specified URIs</td><td>None</td></tr><tr><td>httpAuthenticationPassword</td><td>PasswordProvider to use with specified URIs</td><td>None</td></tr></tbody></table><p>Example with authentication fields using the De [...]
+Note that prefetching or caching isn't that useful in the Parallel task.</p><table><thead><tr><th>property</th><th>description</th><th>default</th></tr></thead><tbody><tr><td>maxCacheCapacityBytes</td><td>Maximum size of the cache space in bytes. 0 means disabling cache. Cached files are not removed until the ingestion task completes.</td><td>1073741824</td></tr><tr><td>maxFetchCapacityBytes</td><td>Maximum size of the fetch space in bytes. 0 means disabling prefetch. Prefetched fil [...]
+This Firehose is <em>splittable</em> and can be used by <a href="/docs/26.0.0/ingestion/native-batch">native parallel index tasks</a>.
+This firehose will accept any type of parser, but will only utilize the list of dimensions and the timestamp specification.
+A sample ingest Firehose spec is shown below:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></spa [...]
+For each query, the results are fetched locally and indexed.
+If there are multiple queries from which data needs to be indexed, queries are prefetched in the background, up to <code>maxFetchCapacityBytes</code> bytes.
+This Firehose is <em>splittable</em> and can be used by <a href="/docs/26.0.0/ingestion/native-batch">native parallel index tasks</a>.
+This firehose will accept any type of parser, but will only utilize the list of dimensions and the timestamp specification. See the extension documentation for more detailed ingestion examples.</p><p>Requires one of the following extensions:</p><ul><li><a href="/docs/26.0.0/development/extensions-core/mysql">MySQL Metadata Store</a>.</li><li><a href="/docs/26.0.0/development/extensions-core/postgresql">PostgreSQL Metadata Store</a>.</li></ul><div class="language-json codeBlockContainer_C [...]
+It can be used for demos or for quickly testing out parsing and schema, and works with <code>string</code> typed parsers.
+A sample inline Firehose spec is shown below:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></spa [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native-batch-input-sources.html/index.html b/docs/26.0.0/ingestion/native-batch-input-sources.html/index.html
new file mode 100644
index 000000000..3d10c2ee3
--- /dev/null
+++ b/docs/26.0.0/ingestion/native-batch-input-sources.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/native-batch-input-sources">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/native-batch-input-sources" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/native-batch-input-sources' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native-batch-input-sources/index.html b/docs/26.0.0/ingestion/native-batch-input-sources/index.html
new file mode 100644
index 000000000..2466fa419
--- /dev/null
+++ b/docs/26.0.0/ingestion/native-batch-input-sources/index.html
@@ -0,0 +1,69 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/native-batch-input-sources">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Native batch input sources | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+all objects contained within the locations.</li></ul><p>The S3 input source is splittable. Therefore, you can use it with the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>. Each worker task of <code>index_parallel</code> reads one or multiple objects.</p><p>Sample specs:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-co [...]
+from Google Cloud Storage. Objects can be specified as list of Google
+Cloud Storage URI strings. The Google Cloud Storage input source is splittable
+and can be used by the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>, where each worker task of <code>index_parallel</code> will read
+one or multiple objects.</p><p>Sample specs:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">...</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token pla [...]
+specify objects as a list of file URI strings or prefixes. You can split the Azure input source for use with <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a> indexing and each worker task reads one chunk of the split data.</p><p>Sample specs:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V [...]
+from HDFS storage. File paths can be specified as an HDFS URI string or a list
+of HDFS URI strings. The HDFS input source is splittable and can be used by the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>,
+where each worker task of <code>index_parallel</code> will read one or multiple files.</p><p>Sample specs:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">...</span><br></span><span c [...]
+However, if you want to ingest from cloud storage, consider using the service-specific input source for your data storage.
+If you want to use a non-hdfs protocol with the HDFS input source, include the protocol
+in <code>druid.ingestion.hdfs.allowedProtocols</code>. See <a href="/docs/26.0.0/configuration/#hdfs-input-source">HDFS input source security configuration</a> for more details.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-input-source">HTTP input source<a href="#http-input-source" class="hash-link" aria-label="Direct link to HTTP input source" title="Direct link to HTTP input source"></a></h2><p>The HTTP input source is to support reading files directly from remote sites [...]
+where each worker task of <code>index_parallel</code> will read only one file. This input source does not support Split Hint Spec.</p><p>Sample specs:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span clas [...]
+The <code>http</code> and <code>https</code> protocols are allowed by default. See <a href="/docs/26.0.0/configuration/#http-input-source">HTTP input source security configuration</a> for more details.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="inline-input-source">Inline input source<a href="#inline-input-source" class="hash-link" aria-label="Direct link to Inline input source" title="Direct link to Inline input source"></a></h2><p>The Inline input source can be used to read [...]
+It can be used for demos or for quickly testing out parsing and schema.</p><p>Sample spec:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">...</span><br></span><span class="token-line [...]
+and is mainly intended for proof-of-concept testing.
+The Local input source is <em>splittable</em> and can be used by the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>,
+where each worker task of <code>index_parallel</code> will read one or multiple files.</p><p>Sample spec:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">...</span><br></span><span cl [...]
+potentially using a new schema and changing the name, dimensions, metrics, rollup, etc. of the segment.
+The Druid input source is <em>splittable</em> and can be used by the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>.
+This input source has a fixed input format for reading from Druid segments;
+no <code>inputFormat</code> field needs to be specified in the ingestion spec when using this input source.</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>Set the value to <code>druid</code>.</td><td>yes</td></tr><tr><td>dataSource</td><td>A String defining the Druid datasource to fetch rows from</td><td>yes</td></tr><tr><td>interval</td><td>A String representing an ISO-8601 interval, which defines the time range to fet [...]
+of milliseconds since the epoch (January 1, 1970 00:00:00 UTC). It is common to use this in the timestampSpec, if you
+want the output timestamp to be equivalent to the input timestamp. In this case, set the timestamp column to <code>__time</code>
+and the format to <code>auto</code> or <code>millis</code>.</p><p>It is OK for the input and output datasources to be the same. In this case, newly generated data will overwrite the
+previous data for the intervals specified in the <code>granularitySpec</code>. Generally, if you are going to do this, it is a good
+idea to test out your reindexing by writing to a separate datasource before overwriting your main one. Alternatively, if
+your goals can be satisfied by <a href="/docs/26.0.0/data-management/compaction">compaction</a>, consider that instead as a simpler
+approach.</p><p>An example task spec is shown below. It reads from a hypothetical raw datasource <code>wikipedia_raw</code> and creates a new
+rolled-up datasource <code>wikipedia_rollup</code> by grouping on hour, "countryName", and "page".</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="col [...]
+have ingestion specs that rely on this and cannot rewrite them, set
+<a href="/docs/26.0.0/configuration/#indexer-general-configuration"><code>druid.indexer.task.ignoreTimestampSpecForDruidInputSource</code></a>
+to <code>true</code> to enable a compatibility mode where the timestampSpec is ignored.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="sql-input-source">SQL input source<a href="#sql-input-source" class="hash-link" aria-label="Direct link to SQL input source" title="Direct link to SQL input source"></a></h2><p>The SQL input source is used to read data directly from RDBMS.
+The SQL input source is <em>splittable</em> and can be used by the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>, where each worker task will read from one SQL query from the list of queries.
+This input source does not support Split Hint Spec.
+Since this input source has a fixed input format for reading events, no <code>inputFormat</code> field needs to be specified in the ingestion spec when using this input source.
+Please refer to the Recommended practices section below before using this input source.</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>Set the value to <code>sql</code>.</td><td>Yes</td></tr><tr><td>database</td><td>Specifies the database connection details. The database type corresponds to the extension that supplies the <code>connectorConfig</code> support. The specified extension must be loaded into Druid:<br><br><ul [...]
+Each of the SQL queries will be run in its own sub-task and thus for the above example, there would be two sub-tasks.</p><p><strong>Recommended practices</strong></p><p>Compared to the other native batch input sources, SQL input source behaves differently in terms of reading the input data. Therefore, consider the following points before using this input source in a production environment:</p><ul><li><p>During indexing, each sub-task would execute one of the SQL queries and the results a [...]
+It identifies the splits from delegate input sources and uses a worker task to process each split.
+Use the Combining input source only if all the delegates are splittable and can be used by the <a href="/docs/26.0.0/ingestion/native-batch">Parallel task</a>.</p><p>Similar to other input sources, the Combining input source supports a single <code>inputFormat</code>.
+Delegate input sources that require an <code>inputFormat</code> must have the same format for input data.
+If you include the <a href="#druid-input-source">Druid input source</a>, the timestamp column is stored in the <code>__time</code> field.
+To correctly combine the data from the Druid input source with another source, ensure that other delegate input sources also store the timestamp column in <code>__time</code>.</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>type</td><td>Set the value to <code>combining</code>.</td><td>Yes</td></tr><tr><td>delegates</td><td>List of splittable input sources to read data from.</td><td>Yes</td></tr></tbody></table><p>The following is an [...]
+Set this value in <code>maxNumConcurrentSubTasks</code> in <code>tuningConfig</code> based on the secondary partitioning method:</p><ul><li><code>range</code> or <code>single_dim</code> partitioning: greater than or equal to 1</li><li><code>hashed</code> or <code>dynamic</code> partitioning: greater than or equal to 2</li></ul><p>For more information on the <code>maxNumConcurrentSubTasks</code> field, see <a href="/docs/26.0.0/ingestion/native-batch#implementation-considerations">Impleme [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native-batch-simple-task.html/index.html b/docs/26.0.0/ingestion/native-batch-simple-task.html/index.html
new file mode 100644
index 000000000..022535378
--- /dev/null
+++ b/docs/26.0.0/ingestion/native-batch-simple-task.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/native-batch-simple-task">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/native-batch-simple-task" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/native-batch-simple-task' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native-batch-simple-task/index.html b/docs/26.0.0/ingestion/native-batch-simple-task/index.html
new file mode 100644
index 000000000..96451914d
--- /dev/null
+++ b/docs/26.0.0/ingestion/native-batch-simple-task/index.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/native-batch-simple-task">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Native batch simple task indexing | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.or [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+methods</a> table to determine which ingestion method is right for you.</p></blockquote><p>The simple task (<a href="/docs/26.0.0/ingestion/tasks">task type</a> <code>index</code>) executes single-threaded as a single task within the indexing service. For parallel, scalable options consider using <a href="/docs/26.0.0/ingestion/native-batch"><code>index_parallel</code> tasks</a> or <a href="/docs/26.0.0/multi-stage-query/">SQL-based batch ingestion</a>.</p><h2 class="anchor anchorWithSti [...]
+pass over the data to determine the range to lock when it starts up. If you specify <code>intervals</code> explicitly, any rows
+outside the specified intervals will be thrown away. We recommend setting <code>intervals</code> explicitly if you know the time
+range of the data because it allows the task to skip the extra pass, and so that you don't accidentally replace data outside
+that range if there's some stray data with unexpected timestamps.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="ioconfig"><code>ioConfig</code><a href="#ioconfig" class="hash-link" aria-label="Direct link to ioconfig" title="Direct link to ioconfig"></a></h3><table><thead><tr><th>property</th><th>description</th><th>default</th><th>required?</th></tr></thead><tbody><tr><td>type</td><td>The task type, this should always be "index".</td><td>none</td><td>yes</td></tr [...]
+You should use different partitionsSpec depending on the <a href="/docs/26.0.0/ingestion/rollup">rollup mode</a> you want.
+For perfect rollup, you should use <code>hashed</code>.</p><table><thead><tr><th>property</th><th>description</th><th>default</th><th>required?</th></tr></thead><tbody><tr><td>type</td><td>This should always be <code>hashed</code></td><td>none</td><td>yes</td></tr><tr><td>maxRowsPerSegment</td><td>Used in sharding. Determines how many rows are in each segment.</td><td>5000000</td><td>no</td></tr><tr><td>numShards</td><td>Directly specify the number of shards to create. If this is specifi [...]
+the simple task index supports the following segment pushing modes based upon your type of <a href="/docs/26.0.0/ingestion/rollup">rollup</a>:</p><ul><li>Bulk pushing mode: Used for perfect rollup. Druid pushes every segment at the very end of the index task. Until then, Druid stores created segments in memory and local storage of the service running the index task. This mode can cause problems if you have limited storage capacity, and is not recommended to use in production.
+To enable bulk pushing mode, set <code>forceGuaranteedRollup</code> in your TuningConfig. You can not use bulk pushing with <code>appendToExisting</code> in your IOConfig.</li><li>Incremental pushing mode: Used for best-effort rollup. Druid pushes segments are incrementally during the course of the indexing task. The index task collects data and stores created segments in the memory and disks of the services running the task until the total number of collected rows exceeds <code>maxTotal [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native-batch.html/index.html b/docs/26.0.0/ingestion/native-batch.html/index.html
new file mode 100644
index 000000000..e52dfef0d
--- /dev/null
+++ b/docs/26.0.0/ingestion/native-batch.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/native-batch">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/native-batch" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/native-batch' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native-batch/index.html b/docs/26.0.0/ingestion/native-batch/index.html
new file mode 100644
index 000000000..592af03f1
--- /dev/null
+++ b/docs/26.0.0/ingestion/native-batch/index.html
@@ -0,0 +1,99 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/native-batch">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Native batch ingestion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+methods</a> table to determine which ingestion method is right for you.</p></blockquote><p>Apache Druid supports the following types of native batch indexing tasks:</p><ul><li>Parallel task indexing (<code>index_parallel</code>) that can run multiple indexing tasks concurrently. Parallel task works well for production ingestion tasks.</li><li>Simple task indexing (<code>index</code>) that run a single indexing task at a time. Simple task indexing is suitable for development and test envi [...]
+<code>/druid/indexer/v1/task</code>, the Overlord service. Alternatively you can use the indexing script included with Druid at <code>bin/post-index-task</code>.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="parallel-task-indexing">Parallel task indexing<a href="#parallel-task-indexing" class="hash-link" aria-label="Direct link to Parallel task indexing" title="Direct link to Parallel task indexing"></a></h2><p>The parallel task type <code>index_parallel</code> is a task f [...]
+the whole indexing process. The supervisor task splits the input data and creates worker tasks to process the individual portions of data.</p><p>Druid issues the worker tasks to the Overlord. The overlord schedules and runs the workers on MiddleManagers or Indexers. After a worker task successfully processes the assigned input portion, it reports the resulting segment list to the supervisor task.</p><p>The supervisor task periodically checks the status of worker tasks. If a task fails, t [...]
+Imagine you want to re-ingest or overwrite a datasource and the new data does not contain some time intervals that exist in the datasource. For example, a datasource contains the following data at <code>MONTH</code> segmentGranularity: </p><ul><li><strong>January</strong>: 1 record </li><li><strong>February</strong>: 10 records </li><li><strong>March</strong>: 10 records </li></ul><p>You want to re-ingest and overwrite with new data as follows: </p><ul><li><strong>January</strong>: 0 [...]
+|property|description|required?|
+|--------|-----------|---------|
+|type|The task type. For parallel task indexing, set the value to <code>index_parallel</code>.|yes|
+|id|The task ID. If omitted, Druid generates the task ID using the task type, data source name, interval, and date-time stamp. |no|
+|spec|The ingestion spec that defines the <a href="#dataschema">data schema</a>, <a href="#ioconfig">IO config</a>, and <a href="#tuningconfig">tuning config</a>.|yes|
+|context|Context to specify various task configuration parameters. See <a href="/docs/26.0.0/ingestion/tasks#context-parameters">Task context parameters</a> for more details.|no|</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dataschema"><code>dataSchema</code><a href="#dataschema" class="hash-link" aria-label="Direct link to dataschema" title="Direct link to dataschema"></a></h3><p>This field is required. In general, it defines the way that Druid will store your data: the primar [...]
+it spawns multiple worker tasks (type <code>single_phase_sub_task</code>), each of which creates segments.
+How the worker task creates segments:</p><ul><li>Whenever the number of rows in the current segment exceeds
+<code>maxRowsPerSegment</code>.</li><li>When the total number of rows in all segments across all time chunks reaches to <code>maxTotalRows</code>. At this point the task pushes all segments created so far to the deep storage and creates new ones.</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="hash-based-partitioning">Hash-based partitioning<a href="#hash-based-partitioning" class="hash-link" aria-label="Direct link to Hash-based partitioning" title="Direct link to Hash-based [...]
+The task runs in up to 3 phases: <code>partial dimension cardinality</code>, <code>partial segment generation</code> and <code>partial segment merge</code>.</p><ul><li>The <code>partial dimension cardinality</code> phase is an optional phase that only runs if <code>numShards</code> is not specified.
+The Parallel task splits the input data and assigns them to worker tasks based on the split hint spec.
+Each worker task (type <code>partial_dimension_cardinality</code>) gathers estimates of partitioning dimensions cardinality for
+each time chunk. The Parallel task will aggregate these estimates from the worker tasks and determine the highest
+cardinality across all of the time chunks in the input data, dividing this cardinality by <code>targetRowsPerSegment</code> to
+automatically determine <code>numShards</code>.</li><li>In the <code>partial segment generation</code> phase, just like the Map phase in MapReduce,
+the Parallel task splits the input data based on the split hint spec
+and assigns each split to a worker task. Each worker task (type <code>partial_index_generate</code>) reads the assigned split, and partitions rows by the time chunk from <code>segmentGranularity</code> (primary partition key) in the <code>granularitySpec</code>
+and then by the hash value of <code>partitionDimensions</code> (secondary partition key) in the <code>partitionsSpec</code>.
+The partitioned data is stored in local storage of
+the <a href="/docs/26.0.0/design/middlemanager">middleManager</a> or the <a href="/docs/26.0.0/design/indexer">indexer</a>.</li><li>The <code>partial segment merge</code> phase is similar to the Reduce phase in MapReduce.
+The Parallel task spawns a new set of worker tasks (type <code>partial_index_generic_merge</code>) to merge the partitioned data created in the previous phase. Here, the partitioned data is shuffled based on
+the time chunk and the hash value of <code>partitionDimensions</code> to be merged; each worker task reads the data falling in the same time chunk and the same hash value from multiple MiddleManager/Indexer processes and merges them to create the final segments. Finally, they push the final segments to the deep storage at once.</li></ul><h5 class="anchor anchorWithStickyNavbar_LWe7" id="hash-partition-function">Hash partition function<a href="#hash-partition-function" class="hash-link" a [...]
+performance.</p><p>The Parallel task will use one subtask when you set <code>maxNumConcurrentSubTasks</code> to 1.</p><p>When you use this technique to partition your data, segment sizes may be unequally distributed if the data in your <code>partitionDimension</code> is also unequally distributed. Therefore, to avoid imbalance in data layout, review the distribution of values in your source data before deciding on a partitioning strategy.</p><p>Range partitioning is not possible on mult [...]
+<code>partitionDimension</code> is multi-value, your ingestion job will report an error.</p><table><thead><tr><th>property</th><th>description</th><th>default</th><th>required?</th></tr></thead><tbody><tr><td>type</td><td>Set the value to <code>single_dim</code>.</td><td>none</td><td>yes</td></tr><tr><td>partitionDimension</td><td>The dimension to partition on. Only rows with a single dimension value are allowed.</td><td>none</td><td>yes</td></tr><tr><td>targetRowsPerSegment</td><td>Targ [...]
+i.e., <code>partial dimension distribution</code>, <code>partial segment generation</code>, and <code>partial segment merge</code>.
+The first phase is to collect some statistics to find
+the best partitioning and the other 2 phases are to create partial segments
+and to merge them, respectively, as in hash-based partitioning.</p><ul><li>In the <code>partial dimension distribution</code> phase, the Parallel task splits the input data and
+assigns them to worker tasks based on the split hint spec. Each worker task (type <code>partial_dimension_distribution</code>) reads
+the assigned split and builds a histogram for <code>partitionDimension</code>.
+The Parallel task collects those histograms from worker tasks and finds
+the best range partitioning based on <code>partitionDimension</code> to evenly
+distribute rows across partitions. Note that either <code>targetRowsPerSegment</code>
+or <code>maxRowsPerSegment</code> will be used to find the best partitioning.</li><li>In the <code>partial segment generation</code> phase, the Parallel task spawns new worker tasks (type <code>partial_range_index_generate</code>)
+to create partitioned data. Each worker task reads a split created as in the previous phase,
+partitions rows by the time chunk from the <code>segmentGranularity</code> (primary partition key) in the <code>granularitySpec</code>
+and then by the range partitioning found in the previous phase.
+The partitioned data is stored in local storage of
+the <a href="/docs/26.0.0/design/middlemanager">middleManager</a> or the <a href="/docs/26.0.0/design/indexer">indexer</a>.</li><li>In the <code>partial segment merge</code> phase, the parallel index task spawns a new set of worker tasks (type <code>partial_index_generic_merge</code>) to merge the partitioned
+data created in the previous phase. Here, the partitioned data is shuffled based on
+the time chunk and the value of <code>partitionDimension</code>; each worker task reads the segments
+falling in the same partition of the same range from multiple MiddleManager/Indexer processes and merges
+them to create the final segments. Finally, they push the final segments to the deep storage.</li></ul><blockquote><p>Because the task with single-dimension range partitioning makes two passes over the input
+in <code>partial dimension distribution</code> and <code>partial segment generation</code> phases,
+the task may fail if the input changes in between the two passes.</p></blockquote><h4 class="anchor anchorWithStickyNavbar_LWe7" id="multi-dimension-range-partitioning">Multi-dimension range partitioning<a href="#multi-dimension-range-partitioning" class="hash-link" aria-label="Direct link to Multi-dimension range partitioning" title="Direct link to Multi-dimension range partitioning"></a></h4><blockquote><p>Multi-dimension range partitioning is not supported in the sequential mode of t [...]
+performance. Multi-dimension range partitioning improves over single-dimension range partitioning by allowing
+Druid to distribute segment sizes more evenly, and to prune on more dimensions.</p><p>Range partitioning is not possible on multi-value dimensions. If one of the provided
+<code>partitionDimensions</code> is multi-value, your ingestion job will report an error.</p><table><thead><tr><th>property</th><th>description</th><th>default</th><th>required?</th></tr></thead><tbody><tr><td>type</td><td>Set the value to <code>range</code>.</td><td>none</td><td>yes</td></tr><tr><td>partitionDimensions</td><td>An array of dimensions to partition on. Order the dimensions from most frequently queried to least frequently queried. For best results, limit your number of dime [...]
+consideration when they cannot possibly contain data matching the query filter.</li></ol><p>For Broker-level segment pruning to be effective, you must include partition dimensions in the <code>WHERE</code> clause. Each
+partition dimension can participate in pruning if the prior partition dimensions (those to its left) are also
+participating, and if the query uses filters that support pruning.</p><p>Filters that support pruning include:</p><ul><li>Equality on string literals, like <code>x = 'foo'</code> and <code>x IN ('foo', 'bar')</code> where <code>x</code> is a string.</li><li>Comparison between string columns and string literals, like <code>x < 'foo'</code> or other comparisons
+involving <code><</code>, <code>></code>, <code><=</code>, or <code>>=</code>.</li></ul><p>For example, if you configure the following <code>range</code> partitioning during ingestion:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class [...]
+can make use of pruning. However, <code>WHERE cityName = 'New York'</code> cannot make use of pruning, because countryName is not
+involved. The clause <code>WHERE cityName LIKE 'New%'</code> cannot make use of pruning either, because LIKE filters do not
+support pruning.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="http-status-endpoints">HTTP status endpoints<a href="#http-status-endpoints" class="hash-link" aria-label="Direct link to HTTP status endpoints" title="Direct link to HTTP status endpoints"></a></h2><p>The supervisor task provides some HTTP endpoints to get running status.</p><ul><li><code>http://{PEON_IP}:{PEON_PORT}/druid/worker/v1/chat/{SUPERVISOR_TASK_ID}/mode</code></li></ul><p>Returns 'parallel' if th [...]
+The returned result contains the worker task spec, a current task status if exists, and task attempt history.</p><p>An example of the result is</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
+the parallel task index supports the following segment pushing modes based upon your type of <a href="/docs/26.0.0/ingestion/rollup">rollup</a>:</p><ul><li>Bulk pushing mode: Used for perfect rollup. Druid pushes every segment at the very end of the index task. Until then, Druid stores created segments in memory and local storage of the service running the index task. To enable bulk pushing mode, set <code>forceGuaranteedRollup</code> to <code>true</code> in your tuning config. You canno [...]
+As a result, total number of tasks which can be run at the same time is <code>(maxNumConcurrentSubTasks + 1)</code> (including the supervisor task).
+Please note that this can be even larger than total number of task slots (sum of the capacity of all workers).
+If <code>maxNumConcurrentSubTasks</code> is larger than <code>n (available task slots)</code>, then
+<code>maxNumConcurrentSubTasks</code> tasks are created by the supervisor task, but only <code>n</code> tasks would be started.
+Others will wait in the pending state until any running task is finished.</p><p>If you are using the Parallel Index Task with stream ingestion together,
+we would recommend to limit the max capacity for batch ingestion to prevent
+stream ingestion from being blocked by batch ingestion. Suppose you have
+<code>t</code> Parallel Index Tasks to run at the same time, but want to limit
+the max number of tasks for batch ingestion to <code>b</code>. Then, (sum of <code>maxNumConcurrentSubTasks</code>
+of all Parallel Index Tasks + <code>t</code> (for supervisor tasks)) must be smaller than <code>b</code>.</p><p>If you have some tasks of a higher priority than others, you may set their
+<code>maxNumConcurrentSubTasks</code> to a higher value than lower priority tasks.
+This may help the higher priority tasks to finish earlier than lower priority tasks
+by assigning more task slots to them.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="splittable-input-sources">Splittable input sources<a href="#splittable-input-sources" class="hash-link" aria-label="Direct link to Splittable input sources" title="Direct link to Splittable input sources"></a></h2><p>Use the <code>inputSource</code> object to define the location where your index can read data. Only the native parallel task and simple task support the input source.</p><p>For detai [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/native_tasks.html/index.html b/docs/26.0.0/ingestion/native_tasks.html/index.html
new file mode 100644
index 000000000..e52dfef0d
--- /dev/null
+++ b/docs/26.0.0/ingestion/native_tasks.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/native-batch">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/native-batch" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/native-batch' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/overview.html/index.html b/docs/26.0.0/ingestion/overview.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/ingestion/overview.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/partitioning.html/index.html b/docs/26.0.0/ingestion/partitioning.html/index.html
new file mode 100644
index 000000000..0f0124ca9
--- /dev/null
+++ b/docs/26.0.0/ingestion/partitioning.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/partitioning">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/partitioning" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/partitioning' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/partitioning/index.html b/docs/26.0.0/ingestion/partitioning/index.html
new file mode 100644
index 000000000..14d295dfa
--- /dev/null
+++ b/docs/26.0.0/ingestion/partitioning/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/partitioning">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Partitioning | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ingesti [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+of small segments, which leads to poor performance.</li></ol><p>The most common choices to balance these considerations are <code>hour</code> and <code>day</code>. For streaming ingestion, <code>hour</code> is especially
+common, because it allows compaction to follow ingestion with less of a time delay.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="secondary-partitioning">Secondary partitioning<a href="#secondary-partitioning" class="hash-link" aria-label="Direct link to Secondary partitioning" title="Direct link to Secondary partitioning"></a></h2><p>Druid can partition segments within a particular time chunk further depending upon options that vary based on the ingestion type you have chosen. [...]
+dimension that you often use as a filter when possible. Such partitioning often improves compression and query performance. For example, some cases have yielded threefold storage size decreases.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="partitioning-and-sorting">Partitioning and sorting<a href="#partitioning-and-sorting" class="hash-link" aria-label="Direct link to Partitioning and sorting" title="Direct link to Partitioning and sorting"></a></h2><p>Partitioning and sorting [...]
+Kafka), you can use <a href="/docs/26.0.0/data-management/update#reindex">reindexing</a> or <a href="/docs/26.0.0/data-management/compaction">compaction</a> to repartition your data after initial ingestion. This is a powerful technique you can use to optimally partition any data older than a certain time threshold while you continuously add new data from a stream.</p><p>The following table shows how each ingestion method handles partitioning:</p><table><thead><tr><th>Method</th><th>How i [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/realtime-ingestion.html/index.html b/docs/26.0.0/ingestion/realtime-ingestion.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/ingestion/realtime-ingestion.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/reports.html/index.html b/docs/26.0.0/ingestion/reports.html/index.html
new file mode 100644
index 000000000..a5fd3f312
--- /dev/null
+++ b/docs/26.0.0/ingestion/reports.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/tasks">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/tasks" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/tasks' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/rollup.html/index.html b/docs/26.0.0/ingestion/rollup.html/index.html
new file mode 100644
index 000000000..50bdbd9eb
--- /dev/null
+++ b/docs/26.0.0/ingestion/rollup.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/rollup">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/rollup" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/rollup' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/rollup/index.html b/docs/26.0.0/ingestion/rollup/index.html
new file mode 100644
index 000000000..ffc1eb6ca
--- /dev/null
+++ b/docs/26.0.0/ingestion/rollup/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/rollup">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Data rollup | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ingestio [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+When queries only involve dimensions in the "abbreviated" set, use the second datasource to reduce query times. Often, this method only requires a small increase in storage footprint because abbreviated datasources tend to be substantially smaller.</li></ul></li><li>If you use a <a href="#perfect-rollup-vs-best-effort-rollup">best-effort rollup</a> ingestion configuration that does not guarantee perfect rollup, try one of the following:<ul><li>Switch to a guaranteed perfect rol [...]
+In both of these cases, records that could theoretically be rolled up may end up in different segments. All types of streaming ingestion run in this mode.</li></ul><p>Ingestion methods that guarantee perfect rollup use an additional preprocessing step to determine intervals and partitioning before data ingestion. This preprocessing step scans the entire input dataset. While this step increases the time required for ingestion, it provides information necessary for perfect rollup.</p><p>Th [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/schema-changes.html/index.html b/docs/26.0.0/ingestion/schema-changes.html/index.html
new file mode 100644
index 000000000..647224944
--- /dev/null
+++ b/docs/26.0.0/ingestion/schema-changes.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/segments">
+ <link rel="canonical" href="/docs/26.0.0/design/segments" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/segments' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/schema-design.html/index.html b/docs/26.0.0/ingestion/schema-design.html/index.html
new file mode 100644
index 000000000..5926bb196
--- /dev/null
+++ b/docs/26.0.0/ingestion/schema-design.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/schema-design">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/schema-design" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/schema-design' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/schema-design/index.html b/docs/26.0.0/ingestion/schema-design/index.html
new file mode 100644
index 000000000..404030751
--- /dev/null
+++ b/docs/26.0.0/ingestion/schema-design/index.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/schema-design">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Schema design tips | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/i [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+ingestion overview page. The rest of this page discusses tips for users coming from other kinds of systems, as well as
+general tips and common practices.</p><ul><li>Druid data is stored in <a href="/docs/26.0.0/ingestion/data-model">datasources</a>, which are similar to tables in a traditional RDBMS.</li><li>Druid datasources can be ingested with or without <a href="/docs/26.0.0/ingestion/rollup">rollup</a>. With rollup enabled, Druid partially aggregates your data during ingestion, potentially reducing its row count, decreasing storage footprint, and improving query performance. With rollup disabled, Dr [...]
+can act similarly to data-warehouse-style dimension tables, but as you'll see below, denormalization is often
+recommended if you can get away with it.</p><p>Common practice for relational data modeling involves <a href="https://en.wikipedia.org/wiki/Database_normalization" target="_blank" rel="noopener noreferrer">normalization</a>:
+the idea of splitting up data into multiple tables such that data redundancy is reduced or eliminated. For example, in a
+"sales" table, best-practices relational modeling calls for a "product id" column that is a foreign key into a separate
+"products" table, which in turn has "product id", "product name", and "product category" columns. This prevents the
+product name and category from needing to be repeated on different rows in the "sales" table that refer to the same
+product.</p><p>In Druid, on the other hand, it is common to use totally flat datasources that do not require joins at query time. In
+the example of the "sales" table, in Druid it would be typical to store "product<em>id", "product_name", and
+"product_category" as dimensions directly in a Druid "sales" datasource, without using a separate "products" table.
+Totally flat schemas substantially increase performance, since the need for joins is eliminated at query time. As an
+an added speed boost, this also allows Druid's query layer to operate directly on compressed dictionary-encoded data.
+Perhaps counter-intuitively, this does _not</em> substantially increase storage footprint relative to normalized schemas,
+since Druid uses dictionary encoding to effectively store just a single integer per row for string columns.</p><p>If necessary, Druid datasources can be partially normalized through the use of <a href="/docs/26.0.0/querying/lookups">lookups</a>,
+which are the rough equivalent of dimension tables in a relational database. At query time, you would use Druid's SQL
+<code>LOOKUP</code> function, or native lookup extraction functions, instead of using the JOIN keyword like you would in a
+relational database. Since lookup tables impose an increase in memory footprint and incur more computational overhead
+at query time, it is only recommended to do this if you need the ability to update a lookup table and have the changes
+reflected immediately for already-ingested rows in your main table.</p><p>Tips for modeling relational data in Druid:</p><ul><li>Druid datasources do not have primary or unique keys, so skip those.</li><li>Denormalize if possible. If you need to be able to update dimension / lookup tables periodically and have those
+changes reflected in already-ingested data, consider partial normalization with <a href="/docs/26.0.0/querying/lookups">lookups</a>.</li><li>If you need to join two large distributed tables with each other, you must do this before loading the data into Druid.
+Druid does not support query-time joins of two datasources. Lookups do not help here, since a full copy of each lookup
+table is stored on each Druid server, so they are not a good choice for large tables.</li><li>Consider whether you want to enable <a href="#rollup">rollup</a> for pre-aggregation, or whether you want to disable
+rollup and load your existing data as-is. Rollup in Druid is similar to creating a summary table in a relational model.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="time-series-model">Time series model<a href="#time-series-model" class="hash-link" aria-label="Direct link to Time series model" title="Direct link to Time series model"></a></h3><p>(Like OpenTSDB or InfluxDB.)</p><p>Similar to time series databases, Druid's data model requires a timestamp. Druid is not a [...]
+it is a natural choice for storing timeseries data. Its flexible data model allows it to store both timeseries and
+non-timeseries data, even in the same datasource.</p><p>To achieve best-case compression and query performance in Druid for timeseries data, it is important to partition and
+sort by metric name, like timeseries databases often do. See <a href="/docs/26.0.0/ingestion/partitioning">Partitioning and sorting</a> for more details.</p><p>Tips for modeling timeseries data in Druid:</p><ul><li>Druid does not think of data points as being part of a "time series". Instead, Druid treats each point separately
+for ingestion and aggregation.</li><li>Create a dimension that indicates the name of the series that a data point belongs to. This dimension is often called
+"metric" or "name". Do not get the dimension named "metric" confused with the concept of Druid metrics. Place this
+first in the list of dimensions in your "dimensionsSpec" for best performance (this helps because it improves locality;
+see <a href="/docs/26.0.0/ingestion/partitioning">partitioning and sorting</a> below for details).</li><li>Create other dimensions for attributes attached to your data points. These are often called "tags" in timeseries
+database systems.</li><li>Create <a href="/docs/26.0.0/querying/aggregations">metrics</a> corresponding to the types of aggregations that you want to be able
+to query. Typically this includes "sum", "min", and "max" (in one of the long, float, or double flavors). If you want the ability
+to compute percentiles or quantiles, use Druid's <a href="/docs/26.0.0/querying/aggregations#approximate-aggregations">approximate aggregators</a>.</li><li>Consider enabling <a href="/docs/26.0.0/ingestion/rollup">rollup</a>, which will allow Druid to potentially combine multiple points into one
+row in your Druid datasource. This can be useful if you want to store data at a different time granularity than it is
+naturally emitted. It is also useful if you want to combine timeseries and non-timeseries data in the same datasource.</li><li>If you don't know ahead of time what columns you'll want to ingest, use an empty dimensions list to trigger
+<a href="#schema-auto-discovery-for-dimensions">automatic detection of dimension columns</a>.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="log-aggregation-model">Log aggregation model<a href="#log-aggregation-model" class="hash-link" aria-label="Direct link to Log aggregation model" title="Direct link to Log aggregation model"></a></h3><p>(Like Elasticsearch or Splunk.)</p><p>Similar to log aggregation systems, Druid offers inverted indexes for fast searching and filterin [...]
+capabilities are generally less developed than these systems, and its analytical capabilities are generally more
+developed. The main data modeling differences between Druid and these systems are that when ingesting data into Druid,
+you must be more explicit. Druid columns have types specific upfront.</p><p>Tips for modeling log data in Druid:</p><ul><li>If you don't know ahead of time what columns to ingest, you can have Druid perform <a href="#schema-auto-discovery-for-dimensions">schema auto-discovery</a>.</li><li>If you have nested data, you can ingest it using the <a href="/docs/26.0.0/querying/nested-columns">nested columns</a> feature or flatten it using a <a href="/docs/26.0.0/ingestion/ingestion-spec#f [...]
+mean you lose the ability to retrieve individual events from Druid, but you potentially gain substantial compression and
+query performance boosts.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="general-tips-and-best-practices">General tips and best practices<a href="#general-tips-and-best-practices" class="hash-link" aria-label="Direct link to General tips and best practices" title="Direct link to General tips and best practices"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="rollup">Rollup<a href="#rollup" class="hash-link" aria-label="Direct link to Rollup" title="Direct link t [...]
+of summarization or pre-aggregation. For more details, see the <a href="/docs/26.0.0/ingestion/rollup">Rollup</a> section of the ingestion
+documentation.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="partitioning-and-sorting">Partitioning and sorting<a href="#partitioning-and-sorting" class="hash-link" aria-label="Direct link to Partitioning and sorting" title="Direct link to Partitioning and sorting"></a></h3><p>Optimally partitioning and sorting your data can have substantial impact on footprint and performance. For more details,
+see the <a href="/docs/26.0.0/ingestion/partitioning">Partitioning</a> section of the ingestion documentation.</p><a name="sketches"></a><h3 class="anchor anchorWithStickyNavbar_LWe7" id="sketches-for-high-cardinality-columns">Sketches for high cardinality columns<a href="#sketches-for-high-cardinality-columns" class="hash-link" aria-label="Direct link to Sketches for high cardinality columns" title="Direct link to Sketches for high cardinality columns"></a></h3><p>When dealing with hig [...]
+analysis rather than operating on the actual values. When you ingest data using a sketch, Druid does not store the
+original raw data, but instead stores a "sketch" of it that it can feed into a later computation at query time. Popular
+use cases for sketches include count-distinct and quantile computation. Each sketch is designed for just one particular
+kind of computation.</p><p>In general using sketches serves two main purposes: improving rollup, and reducing memory footprint at
+query time.</p><p>Sketches improve rollup ratios because they allow you to collapse multiple distinct values into the same sketch. For
+example, if you have two rows that are identical except for a user ID (perhaps two users did the same action at the
+same time), storing them in a count-distinct sketch instead of as-is means you can store the data in one row instead of
+two. You won't be able to retrieve the user IDs or compute exact distinct counts, but you'll still be able to compute
+approximate distinct counts, and you'll reduce your storage footprint.</p><p>Sketches reduce memory footprint at query time because they limit the amount of data that needs to be shuffled between
+servers. For example, in a quantile computation, instead of needing to send all data points to a central location
+so they can be sorted and the quantile can be computed, Druid instead only needs to send a sketch of the points. This
+can reduce data transfer needs to mere kilobytes.</p><p>For details about the sketches available in Druid, see the
+<a href="/docs/26.0.0/querying/aggregations#approximate-aggregations">approximate aggregators</a> page.</p><p>If you prefer videos, take a look at <a href="https://www.youtube.com/watch?v=Hpd3f_MLdXo" target="_blank" rel="noopener noreferrer">Not exactly!</a>, a conference talk
+about sketches in Druid.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="string-vs-numeric-dimensions">String vs numeric dimensions<a href="#string-vs-numeric-dimensions" class="hash-link" aria-label="Direct link to String vs numeric dimensions" title="Direct link to String vs numeric dimensions"></a></h3><p>If the user wishes to ingest a column as a numeric-typed dimension (Long, Double or Float), it is necessary to specify the type of the column in the <code>dimensions</code> se [...]
+than string columns. But unlike string columns, numeric columns don't have indexes, so they can be slower to filter on.
+You may want to experiment to find the optimal choice for your use case.</p><p>For details about how to configure numeric dimensions, see the <a href="/docs/26.0.0/ingestion/ingestion-spec#dimensionsspec"><code>dimensionsSpec</code></a> documentation.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="secondary-timestamps">Secondary timestamps<a href="#secondary-timestamps" class="hash-link" aria-label="Direct link to Secondary timestamps" title="Direct link to Secondary timestamps"> [...]
+<a href="/docs/26.0.0/ingestion/partitioning">partitioning and sorting</a> your data, so it should be the timestamp that you will most often filter on.
+Druid is able to rapidly identify and retrieve data corresponding to time ranges of the primary timestamp column.</p><p>If your data has more than one timestamp, you can ingest the others as secondary timestamps. The best way to do this
+is to ingest them as <a href="/docs/26.0.0/ingestion/ingestion-spec#dimensionsspec">long-typed dimensions</a> in milliseconds format.
+If necessary, you can get them into this format using a <a href="/docs/26.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> and
+<a href="/docs/26.0.0/misc/math-expr">expressions</a> like <code>timestamp_parse</code>, which returns millisecond timestamps.</p><p>At query time, you can query secondary timestamps with <a href="/docs/26.0.0/querying/sql-scalar#date-and-time-functions">SQL time functions</a>
+like <code>MILLIS_TO_TIMESTAMP</code>, <code>TIME_FLOOR</code>, and others. If you're using native Druid queries, you can use
+<a href="/docs/26.0.0/misc/math-expr">expressions</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="nested-dimensions">Nested dimensions<a href="#nested-dimensions" class="hash-link" aria-label="Direct link to Nested dimensions" title="Direct link to Nested dimensions"></a></h3><p>You can ingest and store nested data in a Druid column as a <code>COMPLEX<json></code> data type. See <a href="/docs/26.0.0/querying/nested-columns">Nested columns</a> for more information.</p>< [...]
+ingested. They tell you the number of rows in the Druid datasource, which may be smaller than the number of rows
+ingested.</p><p>In this case, a count aggregator at <em>ingestion</em> time can be used to count the number of events. However, it is important to note
+that when you query for this metric, you should use a <code>longSum</code> aggregator. A <code>count</code> aggregator at query time will return
+the number of Druid rows for the time interval, which can be used to determine what the roll-up ratio was.</p><p>To clarify with an example, if your ingestion spec contains:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="co [...]
+the exclusion list). Druid automatically chooses the most appropriate native Druid type among <code>STRING</code>, <code>LONG</code>,
+<code>DOUBLE</code>, <code>ARRAY<STRING></code>, <code>ARRAY<LONG></code>, <code>ARRAY<DOUBLE></code>, or <code>COMPLEX<json></code> for nested data. For input formats with
+native boolean types, Druid ingests these values as strings if <code>druid.expressions.useStrictBooleans</code> is set to <code>false</code>
+(the default), or longs if set to <code>true</code> (for more SQL compatible behavior). Array typed columns can be queried using
+the <a href="/docs/26.0.0/querying/sql-array-functions">array functions</a> or <a href="/docs/26.0.0/querying/sql-functions#unnest">UNNEST</a>. Nested
+columns can be queried with the <a href="/docs/26.0.0/querying/sql-json-functions">JSON functions</a>.</p><p>Mixed type columns are stored in the <em>least</em> restrictive type that can represent all values in the column. For example:</p><ul><li>Mixed numeric columns are <code>DOUBLE</code></li><li>If there are any strings present, then the column is a <code>STRING</code></li><li>If there are arrays, then the column becomes an array with the least restrictive element type</li><li>Any ne [...]
+If you are not using schema-less dimensions, this use case is supported by setting the <code>name</code> of the metric to something different than the dimension.
+If you are using schema-less dimensions, the best practice here is to include the same column twice, once as a dimension, and as a <code>hyperUnique</code> metric. This may involve
+some work at ETL time.</p><p>As an example, for schema-less dimensions, repeat the same column:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)"> [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/standalone-realtime.html/index.html b/docs/26.0.0/ingestion/standalone-realtime.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/ingestion/standalone-realtime.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/standalone-realtime/index.html b/docs/26.0.0/ingestion/standalone-realtime/index.html
new file mode 100644
index 000000000..3ff7e9ad9
--- /dev/null
+++ b/docs/26.0.0/ingestion/standalone-realtime/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/standalone-realtime">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Realtime Process | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ing [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+modes of real-time ingestion. These processes would periodically build segments for the data they had collected over
+some span of time and then set up hand-off to <a href="/docs/26.0.0/design/historical">Historical</a> servers.</p><p>This processes could be invoked by</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plai [...]
+removed completely in Druid 0.16.0. Operationally, realtime nodes were difficult to configure, deploy, and scale because
+each node required an unique configuration. The design of the stream pull ingestion system for realtime nodes also
+suffered from limitations which made it not possible to achieve exactly once ingestion.</p><p>The extensions <code>druid-kafka-eight</code>, <code>druid-kafka-eight-simpleConsumer</code>, <code>druid-rabbitmq</code>, and <code>druid-rocketmq</code> were also
+removed at this time, since they were built to operate on the realtime nodes.</p><p>Please consider using the <a href="/docs/26.0.0/development/extensions-core/kafka-ingestion">Kafka Indexing Service</a> or
+<a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Kinesis Indexing Service</a> for stream pull ingestion instead.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/development/extensions-core/kinesis-ingestion"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Amazon Kinesis</div></a><a class="pagination-nav__link pagi [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/stream-ingestion.html/index.html b/docs/26.0.0/ingestion/stream-ingestion.html/index.html
new file mode 100644
index 000000000..71d1add53
--- /dev/null
+++ b/docs/26.0.0/ingestion/stream-ingestion.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/design/">
+ <link rel="canonical" href="/docs/26.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/stream-pull.html/index.html b/docs/26.0.0/ingestion/stream-pull.html/index.html
new file mode 100644
index 000000000..9d42700c7
--- /dev/null
+++ b/docs/26.0.0/ingestion/stream-pull.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/stream-push.html/index.html b/docs/26.0.0/ingestion/stream-push.html/index.html
new file mode 100644
index 000000000..a4f9a8f56
--- /dev/null
+++ b/docs/26.0.0/ingestion/stream-push.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/tranquility">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/tranquility" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/tranquility' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/tasks.html/index.html b/docs/26.0.0/ingestion/tasks.html/index.html
new file mode 100644
index 000000000..a5fd3f312
--- /dev/null
+++ b/docs/26.0.0/ingestion/tasks.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/tasks">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/tasks" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/tasks' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/tasks/index.html b/docs/26.0.0/ingestion/tasks/index.html
new file mode 100644
index 000000000..cd7cad1f8
--- /dev/null
+++ b/docs/26.0.0/ingestion/tasks/index.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/tasks">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Task reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/inges [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<a href="/docs/26.0.0/operations/api-reference#tasks">Task APIs</a>. For streaming ingestion, tasks are generally submitted for you by a
+supervisor.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="task-api">Task API<a href="#task-api" class="hash-link" aria-label="Direct link to Task API" title="Direct link to Task API"></a></h2><p>Task APIs are available in two main places:</p><ul><li>The <a href="/docs/26.0.0/design/overlord">Overlord</a> process offers HTTP APIs to submit tasks, cancel tasks, check their status,
+review logs and reports, and more. Refer to the <a href="/docs/26.0.0/operations/api-reference#tasks">Tasks API reference page</a> for a
+full list.</li><li>Druid SQL includes a <a href="/docs/26.0.0/querying/sql-metadata-tables#tasks-table"><code>sys.tasks</code></a> table that provides information about currently
+running tasks. This table is read-only, and has a limited (but useful!) subset of the full information available through
+the Overlord APIs.</li></ul><a name="reports"></a><h2 class="anchor anchorWithStickyNavbar_LWe7" id="task-reports">Task reports<a href="#task-reports" class="hash-link" aria-label="Direct link to Task reports" title="Direct link to Task reports"></a></h2><p>A report containing information about the number of rows ingested, and any parse exceptions that occurred is available for both completed tasks and running tasks.</p><p>The reporting feature is supported by <a href="/docs/26.0.0/inge [...]
+non-parallel <a href="/docs/26.0.0/ingestion/native-batch">native batch task</a> (type <code>index</code>) and the tasks created by the Kafka
+and Kinesis indexing services.</p><a name="locks"></a><h2 class="anchor anchorWithStickyNavbar_LWe7" id="task-lock-system">Task lock system<a href="#task-lock-system" class="hash-link" aria-label="Direct link to Task lock system" title="Direct link to Task lock system"></a></h2><p>This section explains the task locking system in Druid. Druid's locking system
+and versioning system are tightly coupled with each other to guarantee the correctness of ingested data.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="overshadowing-between-segments">"Overshadowing" between segments<a href="#overshadowing-between-segments" class="hash-link" aria-label="Direct link to "Overshadowing" between segments" title="Direct link to "Overshadowing" between segments"></a></h3><p>You can run a task to overwrite existing data. Th [...]
+Note that the overshadow relation holds only for the same time chunk and the same data source.
+These overshadowed segments are not considered in query processing to filter out stale data.</p><p>Each segment has a <em>major</em> version and a <em>minor</em> version. The major version is
+represented as a timestamp in the format of <a href="https://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat" target="_blank" rel="noopener noreferrer"><code>"yyyy-MM-dd'T'hh:mm:ss"</code></a>
+while the minor version is an integer number. These major and minor versions
+are used to determine the overshadow relation between segments as seen below.</p><p>A segment <code>s1</code> overshadows another <code>s2</code> if</p><ul><li><code>s1</code> has a higher major version than <code>s2</code>, or</li><li><code>s1</code> has the same major version and a higher minor version than <code>s2</code>.</li></ul><p>Here are some examples.</p><ul><li>A segment of the major version of <code>2019-01-01T00:00:00.000Z</code> and the minor version of <code>0</code> overshadows
+another of the major version of <code>2018-01-01T00:00:00.000Z</code> and the minor version of <code>1</code>.</li><li>A segment of the major version of <code>2019-01-01T00:00:00.000Z</code> and the minor version of <code>1</code> overshadows
+another of the major version of <code>2019-01-01T00:00:00.000Z</code> and the minor version of <code>0</code>.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="locking">Locking<a href="#locking" class="hash-link" aria-label="Direct link to Locking" title="Direct link to Locking"></a></h3><p>If you are running two or more <a href="/docs/26.0.0/ingestion/tasks">Druid tasks</a> which generate segments for the same data source and the same time chunk,
+the generated segments could potentially overshadow each other, which could lead to incorrect query results.</p><p>To avoid this problem, tasks will attempt to get locks prior to creating any segment in Druid.
+There are two types of locks, i.e., <em>time chunk lock</em> and <em>segment lock</em>.</p><p>When the time chunk lock is used, a task locks the entire time chunk of a data source where generated segments will be written.
+For example, suppose we have a task ingesting data into the time chunk of <code>2019-01-01T00:00:00.000Z/2019-01-02T00:00:00.000Z</code> of the <code>wikipedia</code> data source.
+With the time chunk locking, this task will lock the entire time chunk of <code>2019-01-01T00:00:00.000Z/2019-01-02T00:00:00.000Z</code> of the <code>wikipedia</code> data source
+before it creates any segments. As long as it holds the lock, any other tasks will be unable to create segments for the same time chunk of the same data source.
+The segments created with the time chunk locking have a <em>higher</em> major version than existing segments. Their minor version is always <code>0</code>.</p><p>When the segment lock is used, a task locks individual segments instead of the entire time chunk.
+As a result, two or more tasks can create segments for the same time chunk of the same data source simultaneously
+if they are reading different segments.
+For example, a Kafka indexing task and a compaction task can always write segments into the same time chunk of the same data source simultaneously.
+The reason for this is because a Kafka indexing task always appends new segments, while a compaction task always overwrites existing segments.
+The segments created with the segment locking have the <em>same</em> major version and a <em>higher</em> minor version.</p><blockquote><p>The segment locking is still experimental. It could have unknown bugs which potentially lead to incorrect query results.</p></blockquote><p>To enable segment locking, you may need to set <code>forceTimeChunkLock</code> to <code>false</code> in the <a href="#context">task context</a>.
+Once <code>forceTimeChunkLock</code> is unset, the task will choose a proper lock type to use automatically.
+Please note that segment lock is not always available. The most common use case where time chunk lock is enforced is
+when an overwriting task changes the segment granularity.
+Also, the segment locking is supported by only native indexing tasks and Kafka/Kinesis indexing tasks.
+Hadoop indexing tasks don't support it.</p><p><code>forceTimeChunkLock</code> in the task context is only applied to individual tasks.
+If you want to unset it for all tasks, you would want to set <code>druid.indexer.tasklock.forceTimeChunkLock</code> to false in the <a href="/docs/26.0.0/configuration/#overlord-operations">overlord configuration</a>.</p><p>Lock requests can conflict with each other if two or more tasks try to get locks for the overlapped time chunks of the same data source.
+Note that the lock conflict can happen between different locks types.</p><p>The behavior on lock conflicts depends on the <a href="#lock-priority">task priority</a>.
+If all tasks of conflicting lock requests have the same priority, then the task who requested first will get the lock.
+Other tasks will wait for the task to release the lock.</p><p>If a task of a lower priority asks a lock later than another of a higher priority,
+this task will also wait for the task of a higher priority to release the lock.
+If a task of a higher priority asks a lock later than another of a lower priority,
+then this task will <em>preempt</em> the other task of a lower priority. The lock
+of the lower-prioritized task will be revoked and the higher-prioritized task will acquire a new lock.</p><p>This lock preemption can happen at any time while a task is running except
+when it is <em>publishing segments</em> in a critical section. Its locks become preemptible again once publishing segments is finished.</p><p>Note that locks are shared by the tasks of the same groupId.
+For example, Kafka indexing tasks of the same supervisor have the same groupId and share all locks with each other.</p><a name="priority"></a><h3 class="anchor anchorWithStickyNavbar_LWe7" id="lock-priority">Lock priority<a href="#lock-priority" class="hash-link" aria-label="Direct link to Lock priority" title="Direct link to Lock priority"></a></h3><p>Each task type has a different default lock priority. The below table shows the default priorities of different task types. Higher the n [...]
+The root cause of such spikes is likely to be one or more of the following:</p><ul><li>several concurrent tasks trying to allocate segments for the same datasource and interval</li><li>large number of metadata calls made to the segments and pending segments tables </li><li>concurrency limitations while acquiring a task lock required for allocating a segment</li></ul><p>Since the contention typically arises from tasks allocating segments for the same datasource and interval, you can impro [...]
+To enable batched segment allocation on the overlord, set <code>druid.indexer.tasklock.batchSegmentAllocation</code> to <code>true</code>. See <a href="/docs/26.0.0/configuration/#overlord-operations">overlord configuration</a> for more details.</p><a name="context"></a><h2 class="anchor anchorWithStickyNavbar_LWe7" id="context-parameters">Context parameters<a href="#context-parameters" class="hash-link" aria-label="Direct link to Context parameters" title="Direct link to Context parame [...]
+Specify task context configurations in the <code>context</code> field of the ingestion spec.
+When configuring <a href="/docs/26.0.0/data-management/automatic-compaction">automatic compaction</a>, set the task context configurations in <code>taskContext</code> rather than in <code>context</code>.
+The settings get passed into the <code>context</code> field of the compaction tasks issued to MiddleManagers.</p><p>The following parameters apply to all task types.</p><table><thead><tr><th>property</th><th>default</th><th>description</th></tr></thead><tbody><tr><td><code>taskLockTimeout</code></td><td>300000</td><td>Task lock timeout in milliseconds. For more details, see <a href="#locking">Locking</a>.<br><br>When a task acquires a lock, it sends a request via HTTP and awaits until it [...]
+<a href="/docs/26.0.0/development/extensions-core/kafka-ingestion">Kafka-based ingestion supervisor</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="index_kinesis"><code>index_kinesis</code><a href="#index_kinesis" class="hash-link" aria-label="Direct link to index_kinesis" title="Direct link to index_kinesis"></a></h3><p>Submitted automatically, on your behalf, by a
+<a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Kinesis-based ingestion supervisor</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="compact"><code>compact</code><a href="#compact" class="hash-link" aria-label="Direct link to compact" title="Direct link to compact"></a></h3><p>Compaction tasks merge all segments of the given interval. See the documentation on
+<a href="/docs/26.0.0/data-management/compaction">compaction</a> for details.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kill"><code>kill</code><a href="#kill" class="hash-link" aria-label="Direct link to kill" title="Direct link to kill"></a></h3><p>Kill tasks delete all metadata about certain segments and removes them from deep storage.
+See the documentation on <a href="/docs/26.0.0/data-management/delete">deleting data</a> for details.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/multi-stage-query/known-issues"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Known issues</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/inges [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/tranquility.html/index.html b/docs/26.0.0/ingestion/tranquility.html/index.html
new file mode 100644
index 000000000..a4f9a8f56
--- /dev/null
+++ b/docs/26.0.0/ingestion/tranquility.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/tranquility">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/tranquility" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/tranquility' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/tranquility/index.html b/docs/26.0.0/ingestion/tranquility/index.html
new file mode 100644
index 000000000..25f44e340
--- /dev/null
+++ b/docs/26.0.0/ingestion/tranquility/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-ingestion/tranquility">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Tranquility | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ingestio [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+streams to Druid in real-time. </p><p>Tranquility has not been built against a version of Druid later than Druid 0.9.2
+release. It may still work with the latest Druid servers, but not all features and functionality will be available
+due to limitations of older Druid APIs on the Tranquility side.</p><p>For new projects that require streaming ingestion, we recommend using Druid's native support for
+<a href="/docs/26.0.0/development/extensions-core/kafka-ingestion">Apache Kafka</a> or
+<a href="/docs/26.0.0/development/extensions-core/kinesis-ingestion">Amazon Kinesis</a>.</p><p>For more details, check out the <a href="https://github.com/druid-io/tranquility/" target="_blank" rel="noopener noreferrer">Tranquility GitHub page</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><di [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/transform-spec.html/index.html b/docs/26.0.0/ingestion/transform-spec.html/index.html
new file mode 100644
index 000000000..ca4ed071a
--- /dev/null
+++ b/docs/26.0.0/ingestion/transform-spec.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/ingestion-spec">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/ingestion-spec" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/ingestion-spec' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/ingestion/update-existing-data.html/index.html b/docs/26.0.0/ingestion/update-existing-data.html/index.html
new file mode 100644
index 000000000..5423eae6c
--- /dev/null
+++ b/docs/26.0.0/ingestion/update-existing-data.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/data-management/update">
+ <link rel="canonical" href="/docs/26.0.0/data-management/update" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/data-management/update' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/misc/cluster-setup.html/index.html b/docs/26.0.0/misc/cluster-setup.html/index.html
new file mode 100644
index 000000000..2bf333382
--- /dev/null
+++ b/docs/26.0.0/misc/cluster-setup.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/tutorials/cluster">
+ <link rel="canonical" href="/docs/26.0.0/tutorials/cluster" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/tutorials/cluster' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/misc/evaluate.html/index.html b/docs/26.0.0/misc/evaluate.html/index.html
new file mode 100644
index 000000000..2bf333382
--- /dev/null
+++ b/docs/26.0.0/misc/evaluate.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/tutorials/cluster">
+ <link rel="canonical" href="/docs/26.0.0/tutorials/cluster" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/tutorials/cluster' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/misc/math-expr.html/index.html b/docs/26.0.0/misc/math-expr.html/index.html
new file mode 100644
index 000000000..335f78c31
--- /dev/null
+++ b/docs/26.0.0/misc/math-expr.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/misc/math-expr">
+ <link rel="canonical" href="/docs/26.0.0/misc/math-expr" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/misc/math-expr' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/misc/math-expr/index.html b/docs/26.0.0/misc/math-expr/index.html
new file mode 100644
index 000000000..b5597103b
--- /dev/null
+++ b/docs/26.0.0/misc/math-expr/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-misc/math-expr">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Expressions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/misc/mat [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This document describes the native language. For information about functions available in SQL, refer to the
+<a href="/docs/26.0.0/querying/sql-scalar">SQL documentation</a>.</p></blockquote><p>Expressions are used in various places in the native query language, including
+<a href="/docs/26.0.0/querying/virtual-columns">virtual columns</a> and <a href="/docs/26.0.0/querying/datasource#join">join conditions</a>. They are
+also generated by most <a href="/docs/26.0.0/querying/sql-scalar">Druid SQL functions</a> during the
+<a href="/docs/26.0.0/querying/sql-translation">query translation</a> process.</p><p>Expressions are also used at ingestion time inside <a href="/docs/26.0.0/ingestion/ingestion-spec#transforms">transformations</a>.</p><p>This expression language supports the following operators (listed in decreasing order of precedence).</p><table><thead><tr><th>Operators</th><th>Description</th></tr></thead><tbody><tr><td>!, -</td><td>Unary NOT and Minus</td></tr><tr><td>^</td><td>Binary power op</td>< [...]
+arguments, then the result is <code>NULL</code>. The expressions must all be convertible to a common data type, which will be the
+type of the result:</p><ul><li>If all arguments are <code>NULL</code>, the result is <code>NULL</code>. Otherwise, <code>NULL</code> arguments are ignored.</li><li>If the arguments comprise a mix of numbers and strings, the arguments are interpreted as strings.</li><li>If all arguments are integer numbers, the arguments are interpreted as longs.</li><li>If all arguments are numbers and at least one argument is a double, the arguments are interpreted as doubles. </li></ul><table><thead><t [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/misc/papers-and-talks.html/index.html b/docs/26.0.0/misc/papers-and-talks.html/index.html
new file mode 100644
index 000000000..9cf8d3ed0
--- /dev/null
+++ b/docs/26.0.0/misc/papers-and-talks.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/misc/papers-and-talks">
+ <link rel="canonical" href="/docs/26.0.0/misc/papers-and-talks" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/misc/papers-and-talks' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/misc/papers-and-talks/index.html b/docs/26.0.0/misc/papers-and-talks/index.html
new file mode 100644
index 000000000..2838a09b6
--- /dev/null
+++ b/docs/26.0.0/misc/papers-and-talks/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-misc/papers-and-talks">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Papers | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/misc/papers-a [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/misc/tasks.html/index.html b/docs/26.0.0/misc/tasks.html/index.html
new file mode 100644
index 000000000..a5fd3f312
--- /dev/null
+++ b/docs/26.0.0/misc/tasks.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/ingestion/tasks">
+ <link rel="canonical" href="/docs/26.0.0/ingestion/tasks" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/ingestion/tasks' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query.html/index.html b/docs/26.0.0/multi-stage-query.html/index.html
new file mode 100644
index 000000000..e2838ebe0
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/multi-stage-query/">
+ <link rel="canonical" href="/docs/26.0.0/multi-stage-query/" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/multi-stage-query/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/api.html/index.html b/docs/26.0.0/multi-stage-query/api.html/index.html
new file mode 100644
index 000000000..f135de171
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/multi-stage-query/api">
+ <link rel="canonical" href="/docs/26.0.0/multi-stage-query/api" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/multi-stage-query/api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/api/index.html b/docs/26.0.0/multi-stage-query/api/index.html
new file mode 100644
index 000000000..a4c902cf6
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/api/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-multi-stage-query/api">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">SQL-based ingestion and multi-stage query task API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https: [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/26.0.0/ingestion/#batch">ingestion methods</a> table to determine which
+ingestion method is right for you.</p></blockquote><p>The <strong>Query</strong> view in the web console provides a friendly experience for the multi-stage query task engine (MSQ task
+engine) and multi-stage query architecture. We recommend using the web console if you do not need a programmatic
+interface.</p><p>When using the API for the MSQ task engine, the action you want to take determines the endpoint you use:</p><ul><li><code>/druid/v2/sql/task</code> endpoint: Submit a query for ingestion.</li><li><code>/druid/indexer/v1/task</code> endpoint: Interact with a query, including getting its status, getting its details, or canceling it. This page describes a few of the Overlord Task APIs that you can use with the MSQ task engine. For information about Druid APIs, see the <a hr [...]
+<code>query</code>, <code>context</code>, and <code>parameters</code> fields, but ignoring the <code>resultFormat</code>, <code>header</code>, <code>typesHeader</code>, and
+<code>sqlTypesHeader</code> fields.</p><p>This endpoint accepts <a href="/docs/26.0.0/multi-stage-query/reference#insert">INSERT</a> and <a href="/docs/26.0.0/multi-stage-query/reference#replace">REPLACE</a> statements.</p><p>As an experimental feature, this endpoint also accepts SELECT queries. SELECT query results are collected from workers
+by the controller, and written into the <a href="#get-the-report-for-a-query-task">task report</a> as an array of arrays. The
+behavior and result format of plain SELECT queries (without INSERT or REPLACE) is subject to change.</p><div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">HTTP</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">curl</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">P [...]
+their own reports; their information is incorporated into the controller report.</li><li>The task report API may report <code>404 Not Found</code> temporarily while the task is in the process of starting up.</li><li>As an experimental feature, the MSQ task engine supports running SELECT queries. SELECT query results are written into
+the <code>multiStageQuery.payload.results.results</code> task report key as an array of arrays. The behavior and result format of plain
+SELECT queries (without INSERT or REPLACE) is subject to change.</li></ul><p>For an explanation of the fields in a report, see <a href="#report-response-fields">Report response fields</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="request-2">Request<a href="#request-2" class="hash-link" aria-label="Direct link to Request" title="Direct link to Request"></a></h4><div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="ta [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/concepts.html/index.html b/docs/26.0.0/multi-stage-query/concepts.html/index.html
new file mode 100644
index 000000000..6e3d65bdf
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/concepts.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/multi-stage-query/concepts">
+ <link rel="canonical" href="/docs/26.0.0/multi-stage-query/concepts" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/multi-stage-query/concepts' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/concepts/index.html b/docs/26.0.0/multi-stage-query/concepts/index.html
new file mode 100644
index 000000000..3b98112e6
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/concepts/index.html
@@ -0,0 +1,121 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-multi-stage-query/concepts">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">SQL-based ingestion concepts | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/doc [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/26.0.0/ingestion/#batch">ingestion methods</a> table to determine which
+ingestion method is right for you.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="multi-stage-query-task-engine">Multi-stage query task engine<a href="#multi-stage-query-task-engine" class="hash-link" aria-label="Direct link to Multi-stage query task engine" title="Direct link to Multi-stage query task engine"></a></h2><p>The <code>druid-multi-stage-query</code> extension adds a multi-stage query (MSQ) task engine that executes SQL statements as batch
+tasks in the indexing service, which execute on <a href="/docs/26.0.0/design/architecture#druid-services">Middle Managers</a>.
+<a href="/docs/26.0.0/multi-stage-query/reference#insert">INSERT</a> and <a href="/docs/26.0.0/multi-stage-query/reference#replace">REPLACE</a> tasks publish
+<a href="/docs/26.0.0/design/architecture#datasources-and-segments">segments</a> just like <a href="/docs/26.0.0/ingestion/#batch">all other forms of batch
+ingestion</a>. Each query occupies at least two task slots while running: one controller task,
+and at least one worker task. As an experimental feature, the MSQ task engine also supports running SELECT queries as
+batch tasks. The behavior and result format of plain SELECT (without INSERT or REPLACE) is subject to change.</p><p>You can execute SQL statements using the MSQ task engine through the <strong>Query</strong> view in the <a href="/docs/26.0.0/operations/web-console">web
+console</a> or through the <a href="/docs/26.0.0/multi-stage-query/api"><code>/druid/v2/sql/task</code> API</a>.</p><p>For more details on how SQL queries are executed using the MSQ task engine, see <a href="#multi-stage-query-tasks">multi-stage query
+tasks</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="sql-extensions">SQL extensions<a href="#sql-extensions" class="hash-link" aria-label="Direct link to SQL extensions" title="Direct link to SQL extensions"></a></h2><p>To support ingestion, additional SQL functionality is available through the MSQ task engine.</p><a name="extern"></a><h3 class="anchor anchorWithStickyNavbar_LWe7" id="read-external-data-with-extern">Read external data with <code>EXTERN</code><a href="#read-e [...]
+source</a> and <a href="/docs/26.0.0/ingestion/data-formats#input-format">input format</a>.</p><p><code>EXTERN</code> can read multiple files in parallel across different worker tasks. However, <code>EXTERN</code> does not split individual
+files across multiple worker tasks. If you have a small number of very large input files, you can increase query
+parallelism by splitting up your input files.</p><p>For more information about the syntax, see <a href="/docs/26.0.0/multi-stage-query/reference#extern-function"><code>EXTERN</code></a>.</p><p>See also the set of SQL-friendly input-source-specific table functions which may be more convenient
+than <code>EXTERN</code>.</p><a name="insert"></a><h3 class="anchor anchorWithStickyNavbar_LWe7" id="load-data-with-insert">Load data with <code>INSERT</code><a href="#load-data-with-insert" class="hash-link" aria-label="Direct link to load-data-with-insert" title="Direct link to load-data-with-insert"></a></h3><p><code>INSERT</code> statements can create a new datasource or append to an existing datasource. In Druid SQL, unlike standard SQL,
+there is no syntactical difference between creating a table and appending data to a table. Druid does not include a
+<code>CREATE TABLE</code> statement.</p><p>Nearly all <code>SELECT</code> capabilities are available for <code>INSERT ... SELECT</code> queries. Certain exceptions are listed on the <a href="/docs/26.0.0/multi-stage-query/known-issues#select-statement">Known
+issues</a> page.</p><p><code>INSERT</code> statements acquire a shared lock to the target datasource. Multiple <code>INSERT</code> statements can run at the same time,
+for the same datasource, if your cluster has enough task slots.</p><p>Like all other forms of <a href="/docs/26.0.0/ingestion/#batch">batch ingestion</a>, each <code>INSERT</code> statement generates new segments and
+publishes them at the end of its run. For this reason, it is best suited to loading data in larger batches. Do not use
+<code>INSERT</code> statements to load data in a sequence of microbatches; for that, use <a href="/docs/26.0.0/ingestion/#streaming">streaming
+ingestion</a> instead.</p><p>When deciding whether to use <code>REPLACE</code> or <code>INSERT</code>, keep in mind that segments generated with <code>REPLACE</code> can be pruned
+with dimension-based pruning but those generated with <code>INSERT</code> cannot. For more information about the requirements
+for dimension-based pruning, see <a href="#clustering">Clustering</a>.</p><p>For more information about the syntax, see <a href="/docs/26.0.0/multi-stage-query/reference#insert">INSERT</a>.</p><a name="replace"></a><h3 class="anchor anchorWithStickyNavbar_LWe7" id="overwrite-data-with-replace">Overwrite data with REPLACE<a href="#overwrite-data-with-replace" class="hash-link" aria-label="Direct link to Overwrite data with REPLACE" title="Direct link to Overwrite data with REPLACE"></a>< [...]
+standard SQL, there is no syntactical difference between creating a table and overwriting data in a table. Druid does
+not include a <code>CREATE TABLE</code> statement.</p><p><code>REPLACE</code> uses an <a href="/docs/26.0.0/multi-stage-query/reference#replace-specific-time-ranges">OVERWRITE clause</a> to determine which data to overwrite. You
+can overwrite an entire table, or a specific time range of a table. When you overwrite a specific time range, that time
+range must align with the granularity specified in the <code>PARTITIONED BY</code> clause.</p><p><code>REPLACE</code> statements acquire an exclusive write lock to the target time range of the target datasource. No other ingestion
+or compaction operations may proceed for that time range while the task is running. However, ingestion and compaction
+operations may proceed for other time ranges.</p><p>Nearly all <code>SELECT</code> capabilities are available for <code>REPLACE ... SELECT</code> queries. Certain exceptions are listed on the <a href="/docs/26.0.0/multi-stage-query/known-issues#select-statement">Known
+issues</a> page.</p><p>For more information about the syntax, see <a href="/docs/26.0.0/multi-stage-query/reference#replace">REPLACE</a>.</p><p>When deciding whether to use <code>REPLACE</code> or <code>INSERT</code>, keep in mind that segments generated with <code>REPLACE</code> can be pruned
+with dimension-based pruning but those generated with <code>INSERT</code> cannot. For more information about the requirements
+for dimension-based pruning, see <a href="#clustering">Clustering</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="primary-timestamp">Primary timestamp<a href="#primary-timestamp" class="hash-link" aria-label="Direct link to Primary timestamp" title="Direct link to Primary timestamp"></a></h3><p>Druid tables always include a primary timestamp named <code>__time</code>.</p><p>It is common to set a primary timestamp by using <a href="/docs/26.0.0/querying/sql-scalar#date-and-tim [...]
+functions</a>; for example: <code>TIME_FORMAT("timestamp", 'yyyy-MM-dd
+HH:mm:ss') AS __time</code>.</p><p>The <code>__time</code> column is used for <a href="#partitioning-by-time">partitioning by time</a>. If you use <code>PARTITIONED BY ALL</code> or
+<code>PARTITIONED BY ALL TIME</code>, partitioning by time is disabled. In these cases, you do not need to include a <code>__time</code>
+column in your <code>INSERT</code> statement. However, Druid still creates a <code>__time</code> column in your Druid table and sets all
+timestamps to 1970-01-01 00:00:00.</p><p>For more information, see <a href="/docs/26.0.0/ingestion/data-model#primary-timestamp">Primary timestamp</a>.</p><a name="partitioning"></a><h3 class="anchor anchorWithStickyNavbar_LWe7" id="partitioning-by-time">Partitioning by time<a href="#partitioning-by-time" class="hash-link" aria-label="Direct link to Partitioning by time" title="Direct link to Partitioning by time"></a></h3><p><code>INSERT</code> and <code>REPLACE</code> statements requi [...]
+In Druid, data is split into one or more segments per time chunk, defined by the PARTITIONED BY granularity.</p><p>Partitioning by time is important for three reasons:</p><ol><li>Queries that filter by <code>__time</code> (SQL) or <code>intervals</code> (native) are able to use time partitioning to prune the set of
+segments to consider.</li><li>Certain data management operations, such as overwriting and compacting existing data, acquire exclusive write locks
+on time partitions. Finer-grained partitioning allows finer-grained exclusive write locks.</li><li>Each segment file is wholly contained within a time partition. Too-fine-grained partitioning may cause a large number
+of small segments, which leads to poor performance.</li></ol><p><code>PARTITIONED BY HOUR</code> and <code>PARTITIONED BY DAY</code> are the most common choices to balance these considerations. <code>PARTITIONED
+BY ALL</code> is suitable if your dataset does not have a <a href="#primary-timestamp">primary timestamp</a>.</p><p>For more information about the syntax, see <a href="/docs/26.0.0/multi-stage-query/reference#partitioned-by">PARTITIONED BY</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="clustering">Clustering<a href="#clustering" class="hash-link" aria-label="Direct link to Clustering" title="Direct link to Clustering"></a></h3><p>Within each time chunk defined by <a href="#p [...]
+<a href="/docs/26.0.0/multi-stage-query/reference#clustered-by">CLUSTERED BY</a> clause.</p><p>For example, suppose you ingest 100 million rows per hour using <code>PARTITIONED BY HOUR</code> and <code>CLUSTERED BY hostName</code>. The
+ingestion task will generate segments of roughly 3 million rows — the default value of
+<a href="/docs/26.0.0/multi-stage-query/reference#context-parameters"><code>rowsPerSegment</code></a> — with lexicographic ranges of <code>hostName</code>s grouped into segments.</p><p>Clustering is important for two reasons:</p><ol><li>Lower storage footprint due to improved locality, and therefore improved compressibility.</li><li>Better query performance due to dimension-based segment pruning, which removes segments from consideration when they
+cannot possibly contain data matching a query's filter. This speeds up filters like <code>x = 'foo'</code> and <code>x IN ('foo',
+'bar')</code>.</li></ol><p>To activate dimension-based pruning, these requirements must be met:</p><ul><li>Segments were generated by a <code>REPLACE</code> statement, not an <code>INSERT</code> statement.</li><li>All <code>CLUSTERED BY</code> columns are single-valued string columns.</li></ul><p>If these requirements are <em>not</em> met, Druid still clusters data during ingestion but will not be able to perform
+dimension-based segment pruning at query time. You can tell if dimension-based segment pruning is possible by using the
+<code>sys.segments</code> table to inspect the <code>shard_spec</code> for the segments generated by an ingestion query. If they are of type
+<code>range</code> or <code>single</code>, then dimension-based segment pruning is possible. Otherwise, it is not. The shard spec type is also
+available in the <strong>Segments</strong> view under the <strong>Partitioning</strong> column.</p><p>For more information about syntax, see <a href="/docs/26.0.0/multi-stage-query/reference#clustered-by"><code>CLUSTERED BY</code></a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="rollup">Rollup<a href="#rollup" class="hash-link" aria-label="Direct link to Rollup" title="Direct link to Rollup"></a></h3><p><a href="/docs/26.0.0/ingestion/rollup">Rollup</a> is a technique that pre [...]
+stored. Intermediate aggregations are stored in the generated segments, and further aggregation is done at query time.
+This reduces storage footprint and improves performance, often dramatically.</p><p>To perform ingestion with rollup:</p><ol><li>Use <code>GROUP BY</code>. The columns in the <code>GROUP BY</code> clause become dimensions, and aggregation functions become metrics.</li><li>Set <a href="/docs/26.0.0/multi-stage-query/reference#context-parameters"><code>finalizeAggregations: false</code></a> in your context. This causes aggregation
+functions to write their internal state to the generated segments, instead of the finalized end result, and enables
+further aggregation at query time.</li><li>Wrap all multi-value strings in <code>MV_TO_ARRAY(...)</code> and set <a href="/docs/26.0.0/multi-stage-query/reference#context-parameters"><code>groupByEnableMultiValueUnnesting:
+false</code></a> in your context. This ensures that multi-value strings are left alone and
+remain lists, instead of being <a href="/docs/26.0.0/querying/sql-data-types#multi-value-strings">automatically unnested</a> by the
+<code>GROUP BY</code> operator.</li></ol><p>When you do all of these things, Druid understands that you intend to do an ingestion with rollup, and it writes
+rollup-related metadata into the generated segments. Other applications can then use <a href="/docs/26.0.0/querying/segmentmetadataquery"><code>segmentMetadata</code>
+queries</a> to retrieve rollup-related information.</p><p>If you see the error "Encountered multi-value dimension <code>x</code> that cannot be processed with
+groupByEnableMultiValueUnnesting set to false", then wrap that column in <code>MV_TO_ARRAY(x) AS x</code>.</p><p>The following <a href="/docs/26.0.0/querying/sql-aggregations">aggregation functions</a> are supported for rollup at ingestion time:
+<code>COUNT</code> (but switch to <code>SUM</code> at query time), <code>SUM</code>, <code>MIN</code>, <code>MAX</code>, <code>EARLIEST</code> (<a href="/docs/26.0.0/multi-stage-query/known-issues#select-statement">string only</a>),
+<code>LATEST</code> (<a href="/docs/26.0.0/multi-stage-query/known-issues#select-statement">string only</a>), <code>APPROX_COUNT_DISTINCT</code>, <code>APPROX_COUNT_DISTINCT_BUILTIN</code>,
+<code>APPROX_COUNT_DISTINCT_DS_HLL</code>, <code>APPROX_COUNT_DISTINCT_DS_THETA</code>, and <code>DS_QUANTILES_SKETCH</code> (but switch to
+<code>APPROX_QUANTILE_DS</code> at query time). Do not use <code>AVG</code>; instead, use <code>SUM</code> and <code>COUNT</code> at ingest time and compute the
+quotient at query time.</p><p>For an example, see <a href="/docs/26.0.0/multi-stage-query/examples#insert-with-rollup">INSERT with rollup example</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="multi-stage-query-tasks">Multi-stage query tasks<a href="#multi-stage-query-tasks" class="hash-link" aria-label="Direct link to Multi-stage query tasks" title="Direct link to Multi-stage query tasks"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="execution-flow">Execution [...]
+happens:</p><ol><li><p>The Broker plans your SQL query into a native query, as usual.</p></li><li><p>The Broker wraps the native query into a task of type <code>query_controller</code>
+and submits it to the indexing service.</p></li><li><p>The Broker returns the task ID to you and exits.</p></li><li><p>The controller task launches some number of worker tasks determined by
+the <code>maxNumTasks</code> and <code>taskAssignment</code> <a href="/docs/26.0.0/multi-stage-query/reference#context-parameters">context parameters</a>. You can set these settings individually for each query.</p></li><li><p>Worker tasks of type <code>query_worker</code> execute the query.</p></li><li><p>If the query is a <code>SELECT</code> query, the worker tasks send the results
+back to the controller task, which writes them into its task report.
+If the query is an INSERT or REPLACE query, the worker tasks generate and
+publish new Druid segments to the provided datasource.</p></li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="parallelism">Parallelism<a href="#parallelism" class="hash-link" aria-label="Direct link to Parallelism" title="Direct link to Parallelism"></a></h3><p>The <a href="/docs/26.0.0/multi-stage-query/reference#context-parameters"><code>maxNumTasks</code></a> query parameter determines the maximum number of tasks your
+query will use, including the one <code>query_controller</code> task. Generally, queries perform better with more workers. The
+lowest possible value of <code>maxNumTasks</code> is two (one worker and one controller). Do not set this higher than the number of
+free slots available in your cluster; doing so will result in a <a href="/docs/26.0.0/multi-stage-query/reference#error_TaskStartTimeout">TaskStartTimeout</a>
+error.</p><p>When <a href="#extern">reading external data</a>, EXTERN can read multiple files in parallel across
+different worker tasks. However, EXTERN does not split individual files across multiple worker tasks. If you have a
+small number of very large input files, you can increase query parallelism by splitting up your input files.</p><p>The <code>druid.worker.capacity</code> server property on each <a href="/docs/26.0.0/design/architecture#druid-services">Middle Manager</a>
+determines the maximum number of worker tasks that can run on each server at once. Worker tasks run single-threaded,
+which also determines the maximum number of processors on the server that can contribute towards multi-stage queries.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="memory-usage">Memory usage<a href="#memory-usage" class="hash-link" aria-label="Direct link to Memory usage" title="Direct link to Memory usage"></a></h3><p>Increasing the amount of available memory can improve performance in certain cases:</p><ul><li>Segment generation becomes more efficient when data doesn't sp [...]
+number of required sorting passes.</li></ul><p>Worker tasks use both JVM heap memory and off-heap ("direct") memory.</p><p>On Peons launched by Middle Managers, the bulk of the JVM heap (75%, less any space used by
+<a href="/docs/26.0.0/querying/lookups">lookups</a>) is split up into two bundles of equal size: one processor bundle and one worker
+bundle. Each one comprises 37.5% of the available JVM heap, less any space used by <a href="/docs/26.0.0/querying/lookups">lookups</a>.</p><p>Depending on the type of query, controller and worker tasks may use sketches for determining partition boundaries.
+The heap footprint of these sketches is capped at 10% of available memory, or 300 MB, whichever is lower.</p><p>The processor memory bundle is used for query processing and segment generation. Each processor bundle must also
+provides space to buffer I/O between stages. Specifically, each downstream stage requires 1 MB of buffer space for each
+upstream worker. For example, if you have 100 workers running in stage 0, and stage 1 reads from stage 0, then each
+worker in stage 1 requires 1M * 100 = 100 MB of memory for frame buffers.</p><p>The worker memory bundle is used for sorting stage output data prior to shuffle. Workers can sort more data than fits in
+memory; in this case, they will switch to using disk.</p><p>Worker tasks also use off-heap ("direct") memory. Set the amount of direct memory available (<code>-XX:MaxDirectMemorySize</code>)
+to at least <code>(druid.processing.numThreads + 1) * druid.processing.buffer.sizeBytes</code>. Increasing the amount of direct
+memory available beyond the minimum does not speed up processing.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="disk-usage">Disk usage<a href="#disk-usage" class="hash-link" aria-label="Direct link to Disk usage" title="Direct link to Disk usage"></a></h3><p>Worker tasks use local disk for four purposes:</p><ul><li>Temporary copies of input data. Each temporary file is deleted before the next one is read. You only need
+enough temporary disk space to store one input file at a time per task.</li><li>Temporary data related to segment generation. You only need enough temporary disk space to store one segments' worth
+of data at a time per task. This is generally less than 2 GB per task.</li><li>External sort of data prior to shuffle. Requires enough space to store a compressed copy of the entire output dataset
+for a task.</li><li>Storing stage output data during a shuffle. Requires enough space to store a compressed copy of the entire output
+dataset for a task.</li></ul><p>Workers use the task working directory, given by
+<a href="/docs/26.0.0/configuration/#additional-peon-configuration"><code>druid.indexer.task.baseDir</code></a>, for these items. It is
+important that this directory has enough space available for these purposes.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/26.0.0/multi-stage-query/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Overview</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/26.0.0/multi-stage-query/api"><div class="pagination- [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/examples.html/index.html b/docs/26.0.0/multi-stage-query/examples.html/index.html
new file mode 100644
index 000000000..f147fd081
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/examples.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/multi-stage-query/examples">
+ <link rel="canonical" href="/docs/26.0.0/multi-stage-query/examples" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/multi-stage-query/examples' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/examples/index.html b/docs/26.0.0/multi-stage-query/examples/index.html
new file mode 100644
index 000000000..85ad24e3d
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/examples/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-multi-stage-query/examples">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">SQL-based ingestion query examples | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.o [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/26.0.0/ingestion/#batch">ingestion methods</a> table to determine which
+ingestion method is right for you.</p></blockquote><p>These example queries show you some of the things you can do when modifying queries for your use case. Copy the example queries into the <strong>Query</strong> view of the web console and run them to see what they do.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="insert-with-no-rollup">INSERT with no rollup<a href="#insert-with-no-rollup" class="hash-link" aria-label="Direct link to INSERT with no rollup" title="Direct link to [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/index.html b/docs/26.0.0/multi-stage-query/index.html
new file mode 100644
index 000000000..b935c1c4e
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-multi-stage-query/index">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">SQL-based ingestion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/26.0.0/ingestion/#batch">ingestion methods</a> table to determine which
+ingestion method is right for you.</p></blockquote><p>Apache Druid supports SQL-based ingestion using the bundled <a href="#load-the-extension"><code>druid-multi-stage-query</code> extension</a>.
+This extension adds a <a href="/docs/26.0.0/multi-stage-query/concepts#multi-stage-query-task-engine">multi-stage query task engine for SQL</a> that allows running SQL
+<a href="/docs/26.0.0/multi-stage-query/concepts#insert">INSERT</a> and <a href="/docs/26.0.0/multi-stage-query/concepts#replace">REPLACE</a> statements as batch tasks. As an experimental feature,
+the task engine also supports running <code>SELECT</code> queries as batch tasks.</p><p>Nearly all <code>SELECT</code> capabilities are available in the multi-stage query (MSQ) task engine, with certain exceptions listed on the <a href="/docs/26.0.0/multi-stage-query/known-issues#select-statement">Known
+issues</a> page. This allows great flexibility to apply transformations, filters, JOINs,
+aggregations, and so on as part of <code>INSERT ... SELECT</code> and <code>REPLACE ... SELECT</code> statements. This also allows in-database
+transformation: creating new tables based on queries of other tables.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="vocabulary">Vocabulary<a href="#vocabulary" class="hash-link" aria-label="Direct link to Vocabulary" title="Direct link to Vocabulary"></a></h2><ul><li><p><strong>Controller</strong>: An indexing service task of type <code>query_controller</code> that manages
+the execution of a query. There is one controller task per query.</p></li><li><p><strong>Worker</strong>: Indexing service tasks of type <code>query_worker</code> that execute a
+query. There can be multiple worker tasks per query. Internally,
+the tasks process items in parallel using their processing pools (up to <code>druid.processing.numThreads</code> of execution parallelism
+within a worker task).</p></li><li><p><strong>Stage</strong>: A stage of query execution that is parallelized across
+worker tasks. Workers exchange data with each other between stages.</p></li><li><p><strong>Partition</strong>: A slice of data output by worker tasks. In INSERT or REPLACE
+queries, the partitions of the final stage become Druid segments.</p></li><li><p><strong>Shuffle</strong>: Workers exchange data between themselves on a per-partition basis in a process called
+shuffling. During a shuffle, each output partition is sorted by a clustering key.</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="load-the-extension">Load the extension<a href="#load-the-extension" class="hash-link" aria-label="Direct link to Load the extension" title="Direct link to Load the extension"></a></h2><p>To add the extension to an existing cluster, add <code>druid-multi-stage-query</code> to <code>druid.extensions.loadlist</code> in your
+<code>common.runtime.properties</code> file.</p><p>For more information about how to load an extension, see <a href="/docs/26.0.0/development/extensions#loading-extensions">Loading extensions</a>.</p><p>To use <a href="/docs/26.0.0/multi-stage-query/reference#extern-function">EXTERN</a>, you need READ permission on the resource named "EXTERNAL" of the resource type
+"EXTERNAL". If you encounter a 403 error when trying to use <code>EXTERN</code>, verify that you have the correct permissions.
+The same is true of any of the input-source specific table function such as <code>S3</code> or <code>LOCALFILES</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="next-steps">Next steps<a href="#next-steps" class="hash-link" aria-label="Direct link to Next steps" title="Direct link to Next steps"></a></h2><ul><li><a href="/docs/26.0.0/multi-stage-query/concepts">Read about key concepts</a> to learn more about how SQL-based ingestion and multi-stage queries work.</li><li><a hr [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/known-issues.html/index.html b/docs/26.0.0/multi-stage-query/known-issues.html/index.html
new file mode 100644
index 000000000..75b7e6fd2
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/known-issues.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/multi-stage-query/known-issues">
+ <link rel="canonical" href="/docs/26.0.0/multi-stage-query/known-issues" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/multi-stage-query/known-issues' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/known-issues/index.html b/docs/26.0.0/multi-stage-query/known-issues/index.html
new file mode 100644
index 000000000..9b41effad
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/known-issues/index.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-multi-stage-query/known-issues">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">SQL-based ingestion known issues | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/26.0.0/ingestion/#batch">ingestion methods</a> table to determine which
+ingestion method is right for you.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="multi-stage-query-task-runtime">Multi-stage query task runtime<a href="#multi-stage-query-task-runtime" class="hash-link" aria-label="Direct link to Multi-stage query task runtime" title="Direct link to Multi-stage query task runtime"></a></h2><ul><li><p>Fault tolerance is partially implemented. Workers get relaunched when they are killed unexpectedly. The controller does not get relaun [...]
+generate a large amount of output data may exhaust all available disk space. In this case, the query fails with
+an <a href="/docs/26.0.0/multi-stage-query/reference#error_UnknownError">UnknownError</a> with a message including "No space left on device".</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="select-statement"><code>SELECT</code> Statement<a href="#select-statement" class="hash-link" aria-label="Direct link to select-statement" title="Direct link to select-statement"></a></h2><ul><li><p><code>SELECT</code> from a Druid datasource does not include unpublished real [...]
+<a href="/docs/26.0.0/multi-stage-query/reference#error_QueryNotSupported">QueryNotSupported</a> error.</p></li><li><p>For some <code>COUNT DISTINCT</code> queries, you'll encounter a <a href="/docs/26.0.0/multi-stage-query/reference#error_QueryNotSupported">QueryNotSupported</a> error
+that includes <code>Must not have 'subtotalsSpec'</code> as one of its causes. This is caused by the planner attempting to use
+<code>GROUPING SET</code>s, which are not implemented.</p></li><li><p>The numeric varieties of the <code>EARLIEST</code> and <code>LATEST</code> aggregators do not work properly. Attempting to use the numeric
+varieties of these aggregators lead to an error like
+<code>java.lang.ClassCastException: class java.lang.Double cannot be cast to class org.apache.druid.collections.SerializablePair</code>.
+The string varieties, however, do work properly.</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="insert-and-replace-statements"><code>INSERT</code> and <code>REPLACE</code> Statements<a href="#insert-and-replace-statements" class="hash-link" aria-label="Direct link to insert-and-replace-statements" title="Direct link to insert-and-replace-statements"></a></h2><ul><li><p>The <code>INSERT</code> and <code>REPLACE</code> statements with column lists, like <code>INSERT INTO [...]
+differs from SQL standard behavior, where columns are inserted based on position.</p></li><li><p><code>INSERT</code> and <code>REPLACE</code> do not support all options available in <a href="/docs/26.0.0/ingestion/ingestion-spec">ingestion specs</a>,
+including the <code>createBitmapIndex</code> and <code>multiValueHandling</code> <a href="/docs/26.0.0/ingestion/ingestion-spec#dimension-objects">dimension</a>
+properties, and the <code>indexSpec</code> <a href="/docs/26.0.0/ingestion/ingestion-spec#tuningconfig"><code>tuningConfig</code></a> property.</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="extern-function"><code>EXTERN</code> Function<a href="#extern-function" class="hash-link" aria-label="Direct link to extern-function" title="Direct link to extern-function"></a></h2><ul><li><p>The <a href="/docs/26.0.0/ingestion/ingestion-spec#inclusions-and-exclusions">schemaless d [...]
+feature is not available. All columns and their types must be specified explicitly using the <code>signature</code> parameter
+of the <a href="/docs/26.0.0/multi-stage-query/reference#extern-function"><code>EXTERN</code> function</a>.</p></li><li><p><code>EXTERN</code> with input sources that match large numbers of files may exhaust available memory on the controller task.</p></li><li><p><code>EXTERN</code> refers to external files. Use <code>FROM</code> to access <code>druid</code> input sources.</p></li></ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="paginati [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/reference.html/index.html b/docs/26.0.0/multi-stage-query/reference.html/index.html
new file mode 100644
index 000000000..7cd8febd5
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/reference.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/multi-stage-query/reference">
+ <link rel="canonical" href="/docs/26.0.0/multi-stage-query/reference" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/multi-stage-query/reference' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/reference/index.html b/docs/26.0.0/multi-stage-query/reference/index.html
new file mode 100644
index 000000000..8279aa733
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/reference/index.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-multi-stage-query/reference">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">SQL-based ingestion reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/26.0.0/ingestion/#batch">ingestion methods</a> table to determine which
+ingestion method is right for you.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="sql-reference">SQL reference<a href="#sql-reference" class="hash-link" aria-label="Direct link to SQL reference" title="Direct link to SQL reference"></a></h2><p>This topic is a reference guide for the multi-stage query architecture in Apache Druid. For examples of real-world
+usage, refer to the <a href="/docs/26.0.0/multi-stage-query/examples">Examples</a> page.</p><p><code>INSERT</code> and <code>REPLACE</code> load data into a Druid datasource from either an external input source, or from another
+datasource. When loading from an external datasource, you typically must provide the kind of input source,
+the data format, and the schema (signature) of the input file. Druid provides <em>table functions</em> to allow you to
+specify the external file. There are two kinds. <code>EXTERN</code> works with the JSON-serialized specs for the three
+items, using the same JSON you would use in native ingest. A set of other, input-source-specific functions
+use SQL syntax to specify the format and the input schema. There is one function for each input source. The
+input-source-specific functions allow you to use SQL query parameters to specify the set of files (or URIs),
+making it easy to reuse the same SQL statement for each ingest: just specify the set of files to use each time.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="extern-function"><code>EXTERN</code> Function<a href="#extern-function" class="hash-link" aria-label="Direct link to extern-function" title="Direct link to extern-function"></a></h3><p>Use the <code>EXTERN</code> function to read external data. The function has two variations.</p><p>Function variation 1, with the input sche [...]
+<code>name</code> and a <code>type</code>. The type can be <code>string</code>, <code>long</code>, <code>double</code>, or <code>float</code>. This row signature is
+used to map the external data into the SQL layer.</li></ol><p>Variation 2, with the input schema expressed in SQL using an <code>EXTEND</code> clause. (See the next
+section for more detail on <code>EXTEND</code>). This format also uses named arguments to make the
+SQL a bit easier to read:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">SELECT</span><span class="token plain"></span><br></span><span class="token-line" s [...]
+Example: <code>(timestamp VARCHAR, metricType VARCHAR, value BIGINT)</code>. The optional <code>EXTEND</code> keyword
+can precede the column list: <code>EXTEND (timestamp VARCHAR...)</code>.</p><p>For more information, see <a href="/docs/26.0.0/multi-stage-query/concepts#extern">Read external data with EXTERN</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="insert"><code>INSERT</code><a href="#insert" class="hash-link" aria-label="Direct link to insert" title="Direct link to insert"></a></h3><p>Use the <code>INSERT</code> statement to insert data.</p><p>Unlike standard SQL, <code>INSERT</code [...]
+use <code>AS</code> in your <code>SELECT</code> column list to assign the correct names. Do not rely on their positions within the SELECT
+clause.</p><p>Statement format:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">INSERT</span><span class="token plain"> </span><span class="token keyword" st [...]
+to reference external tables using <code>FROM TABLE(EXTERN(...))</code>.</li><li>A <a href="#partitioned-by">PARTITIONED BY</a> clause, such as <code>PARTITIONED BY DAY</code>.</li><li>An optional <a href="#clustered-by">CLUSTERED BY</a> clause.</li></ol><p>For more information, see <a href="/docs/26.0.0/multi-stage-query/concepts#insert">Load data with INSERT</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="replace"><code>REPLACE</code><a href="#replace" class="hash-link" aria [...]
+use <code>AS</code> in your <code>SELECT</code> column list to assign the correct names. Do not rely on their positions within the SELECT
+clause.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="replace-all-data"><code>REPLACE</code> all data<a href="#replace-all-data" class="hash-link" aria-label="Direct link to replace-all-data" title="Direct link to replace-all-data"></a></h4><p>Function format to replace all data:</p><div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-cod [...]
+column and use the format <code>__time [< > = <= >=] TIMESTAMP</code>. Use them with AND, OR, and NOT between them, inclusive
+of the timestamps specified. No other expressions or functions are valid in OVERWRITE.</li></ul></li><li>A clause for the actual data you want to use for the replacement.</li><li>A <a href="#partitioned-by">PARTITIONED BY</a> clause, such as <code>PARTITIONED BY DAY</code>.</li><li>An optional <a href="#clustered-by">CLUSTERED BY</a> clause.</li></ol><p>For more information, see <a href="/docs/26.0.0/multi-stage-query/concepts#replace">Overwrite data with REPLACE</a>.</p><h3 class="ancho [...]
+<a href="/docs/26.0.0/multi-stage-query/concepts#partitioning">Partitioning</a> for details.</p><p>The following granularity arguments are accepted:</p><ul><li>Time unit keywords: <code>HOUR</code>, <code>DAY</code>, <code>MONTH</code>, or <code>YEAR</code>. Equivalent to <code>FLOOR(__time TO TimeUnit)</code>.</li><li>Time units as ISO 8601 period strings: :<code>'PT1H'</code>, '<code>P1D</code>, etc. (Druid 26.0 and later.)</li><li><code>TIME_FLOOR(__time, 'granular [...]
+first argument must be <code>__time</code>.</li><li><code>FLOOR(__time TO TimeUnit)</code>, where <code>TimeUnit</code> is any unit supported by the <a href="/docs/26.0.0/querying/sql-scalar#date-and-time-functions">FLOOR function</a>. The first argument must be <code>__time</code>.</li><li><code>ALL</code> or <code>ALL TIME</code>, which effectively disables time partitioning by placing all data in a single time chunk. To use
+LIMIT or OFFSET at the outer level of your <code>INSERT</code> or <code>REPLACE</code> query, you must set <code>PARTITIONED BY</code> to <code>ALL</code> or <code>ALL TIME</code>.</li></ul><p>Earlier versions required the <code>TIME_FLOOR</code> notation to specify a granularity other than the keywords.
+In the current version, the string constant provides a simpler equivalent solution.</p><p>The following ISO 8601 periods are supported for <code>TIME_FLOOR</code> and the string constant:</p><ul><li>PT1S</li><li>PT1M</li><li>PT5M</li><li>PT10M</li><li>PT15M</li><li>PT30M</li><li>PT1H</li><li>PT6H</li><li>P1D</li><li>P1W</li><li>P1M</li><li>P3M</li><li>P1Y</li></ul><p>For more information about partitioning, see <a href="/docs/26.0.0/multi-stage-query/concepts#partitioning">Partitioning</ [...]
+column names or expressions.</p><p>For more information about clustering, see <a href="/docs/26.0.0/multi-stage-query/concepts#clustering">Clustering</a>.</p><a name="context"></a><h2 class="anchor anchorWithStickyNavbar_LWe7" id="context-parameters">Context parameters<a href="#context-parameters" class="hash-link" aria-label="Direct link to Context parameters" title="Direct link to Context parameters"></a></h2><p>In addition to the Druid SQL <a href="/docs/26.0.0/querying/sql-query-con [...]
+<code>sqlJoinAlgorithm</code>. This context parameter applies to the entire SQL statement, so it is not possible to mix different
+join algorithms in the same query.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="broadcast">Broadcast<a href="#broadcast" class="hash-link" aria-label="Direct link to Broadcast" title="Direct link to Broadcast"></a></h3><p>Set <code>sqlJoinAlgorithm</code> to <code>broadcast</code>.</p><p>The default join algorithm for multi-stage queries is a broadcast hash join, which is similar to how
+<a href="/docs/26.0.0/querying/query-execution#join">joins are executed with native queries</a>. First, any adjacent joins are flattened
+into a structure with a "base" input (the bottom-leftmost one) and other leaf inputs (the rest). Next, any subqueries
+that are inputs the join (either base or other leafs) are planned into independent stages. Then, the non-base leaf
+inputs are all connected as broadcast inputs to the "base" stage.</p><p>Together, all of these non-base leaf inputs must not exceed the <a href="#limits">limit on broadcast table footprint</a>. There
+is no limit on the size of the base (leftmost) input.</p><p>Only LEFT JOIN, INNER JOIN, and CROSS JOIN are supported with with <code>broadcast</code>.</p><p>Join conditions, if present, must be equalities. It is not necessary to include a join condition; for example,
+<code>CROSS JOIN</code> and comma join do not require join conditions.</p><p>As an example, the following statement has a single join chain where <code>orders</code> is the base input, and <code>products</code> and
+<code>customers</code> are non-base leaf inputs. The query will first read <code>products</code> and <code>customers</code>, then broadcast both to
+the stage that reads <code>orders</code>. That stage loads the broadcast inputs (<code>products</code> and <code>customers</code>) in memory, and walks
+through <code>orders</code> row by row. The results are then aggregated and written to the table <code>orders_enriched</code>. The broadcast
+inputs (<code>products</code> and <code>customers</code>) must fall under the limit on broadcast table footprint, but the base <code>orders</code> input
+can be unlimited in size.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">REPLACE INTO orders_enriched</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">OVER [...]
+stage with two inputs. The two inputs are partitioned and sorted using a hash partitioning on the same key. This
+approach is generally less performant, but more scalable, than <code>broadcast</code>. There are various scenarios where broadcast
+join would return a <a href="#errors"><code>BroadcastTablesTooLarge</code></a> error, but a sort-merge join would succeed.</p><p>There is no limit on the overall size of either input, so sort-merge is a good choice for performing a join of two large
+inputs, or for performing a self-join of a large input with itself.</p><p>There is a limit on the amount of data associated with each individual key. If <em>both</em> sides of the join exceed this
+limit, the query returns a <a href="#errors"><code>TooManyRowsWithSameKey</code></a> error. If only one side exceeds the limit, the query
+does not return this error.</p><p>Join conditions, if present, must be equalities. It is not necessary to include a join condition; for example,
+<code>CROSS JOIN</code> and comma join do not require join conditions.</p><p>All join types are supported with <code>sortMerge</code>: LEFT, RIGHT, INNER, FULL, and CROSS.</p><p>As an example, the following statement runs using a single sort-merge join stage that receives <code>eventstream</code>
+(partitioned on <code>user_id</code>) and <code>users</code> (partitioned on <code>id</code>) as inputs. There is no limit on the size of either input.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plai [...]
+cleaner can be scheduled to clean the directories corresponding to which there isn't a controller task running. It utilizes
+the storage connector to work upon the durable storage. The durable storage location should only be utilized to store the output
+for cluster's MSQ tasks. If the location contains other files or directories, then they will get cleaned up as well.</p><p>Enabling durable storage also enables the use of local disk to store temporary files, such as the intermediate files produced
+by the super sorter. The limit set by <code>druid.indexer.task.tmpStorageBytesPerTask</code> for maximum number of bytes of local
+storage to be used per task will be respected by MSQ tasks. If the configured limit is too low, <code>NotEnoughTemporaryStorageFault</code>
+may be thrown.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="enable-durable-storage">Enable durable storage<a href="#enable-durable-storage" class="hash-link" aria-label="Direct link to Enable durable storage" title="Direct link to Enable durable storage"></a></h3><p>To enable durable storage, you need to set the following common service properties:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class= [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/security.html/index.html b/docs/26.0.0/multi-stage-query/security.html/index.html
new file mode 100644
index 000000000..349274de8
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/security.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/multi-stage-query/security">
+ <link rel="canonical" href="/docs/26.0.0/multi-stage-query/security" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/multi-stage-query/security' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/multi-stage-query/security/index.html b/docs/26.0.0/multi-stage-query/security/index.html
new file mode 100644
index 000000000..d1c9d41ed
--- /dev/null
+++ b/docs/26.0.0/multi-stage-query/security/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-multi-stage-query/security">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">SQL-based ingestion security | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/doc [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/26.0.0/ingestion/#batch">ingestion methods</a> table to determine which
+ingestion method is right for you.</p></blockquote><p>All authenticated users can use the multi-stage query task engine (MSQ task engine) through the UI and API if the
+extension is loaded. However, without additional permissions, users are not able to issue queries that read or write
+Druid datasources or external data. The permission needed depends on what the user is trying to do.</p><p>To submit a query:</p><ul><li>SELECT from a Druid datasource requires the READ DATASOURCE permission on that datasource.</li><li><a href="/docs/26.0.0/multi-stage-query/reference#insert">INSERT</a> or <a href="/docs/26.0.0/multi-stage-query/reference#replace">REPLACE</a> into a Druid datasource requires the WRITE DATASOURCE
+permission on that datasource.</li><li><a href="/docs/26.0.0/multi-stage-query/reference#extern-function">EXTERN</a> and the input-source-specific table functions require READ permission on a
+resource named "EXTERNAL" with type "EXTERNAL". Users without the correct
+permission encounter a 403 error when trying to run queries that include <code>EXTERN</code>.</li></ul><p>Once a query is submitted, it executes as a <a href="/docs/26.0.0/multi-stage-query/concepts#execution-flow"><code>query_controller</code></a> task. Query tasks that
+users submit to the MSQ task engine are Overlord tasks, so they follow the Overlord's security model. This means that
+users with access to the Overlord API can perform some actions even if they didn't submit the query, including
+retrieving status or canceling a query. For more information about the Overlord API and the task API, see <a href="/docs/26.0.0/multi-stage-query/api">APIs for
+SQL-based ingestion</a>.</p><p>To interact with a query through the Overlord API, users need the following permissions:</p><ul><li><code>INSERT</code> or <code>REPLACE</code> queries: Users must have READ DATASOURCE permission on the output datasource.</li><li><code>SELECT</code> queries: Users must have read permissions on the <code>__query_select</code> datasource, which is a stub datasource that gets created.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="s3">S3<a href="# [...]
+These permissions are required if you configure durable storage. </p><p>Permissions for pushing and fetching intermediate stage results to and from S3:</p><ul><li><code>s3:GetObject</code></li><li><code>s3:PutObject</code></li><li><code>s3:AbortMultipartUpload</code></li></ul><p>Permissions for removing intermediate stage results:</p><ul><li><code>s3:DeleteObject</code></li></ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav_ [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/operations/alerts.html/index.html b/docs/26.0.0/operations/alerts.html/index.html
new file mode 100644
index 000000000..a7dd57b94
--- /dev/null
+++ b/docs/26.0.0/operations/alerts.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/operations/alerts">
+ <link rel="canonical" href="/docs/26.0.0/operations/alerts" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/operations/alerts' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/operations/alerts/index.html b/docs/26.0.0/operations/alerts/index.html
new file mode 100644
index 000000000..46b784d5f
--- /dev/null
+++ b/docs/26.0.0/operations/alerts/index.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-operations/alerts">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">Alerts | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/operations/al [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.f80751b3.css">
+<link rel="preload" href="/assets/js/runtime~main.cba2666a.js" as="script">
+<link rel="preload" href="/assets/js/main.b8bc8f63.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.cba2666a.js"></script>
+<script src="/assets/js/main.b8bc8f63.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/operations/api-reference.html/index.html b/docs/26.0.0/operations/api-reference.html/index.html
new file mode 100644
index 000000000..7920ef33a
--- /dev/null
+++ b/docs/26.0.0/operations/api-reference.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/26.0.0/operations/api-reference">
+ <link rel="canonical" href="/docs/26.0.0/operations/api-reference" />
+ </head>
+ <script>
+ window.location.href = '/docs/26.0.0/operations/api-reference' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/26.0.0/operations/api-reference/index.html b/docs/26.0.0/operations/api-reference/index.html
new file mode 100644
index 000000000..b261a9df3
--- /dev/null
+++ b/docs/26.0.0/operations/api-reference/index.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-operations/api-reference">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.1">
+<title data-rh="true">API reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/26.0.0/operat [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
... 6704 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org