Apache Druid website screenshot

Apache Druid

Apache Druid is a high-performance, real-time analytics database governed by the Apache Software Foundation, designed for fast slice-and-dice OLAP queries on event-time data. It features a distributed, column-oriented storage engine with automatic rollup, supports both streaming (Kafka, Kinesis) and batch (S3, HDFS, local) data ingestion, and provides a SQL query interface plus a native JSON query API via REST. Druid is optimized for sub-second queries at petabyte scale with high concurrency.

1 APIs 8 Features
AnalyticsApacheDatabaseKafkaOLAPOpen SourceReal-TimeSQLTime Series

APIs

Apache Druid REST API

Druid exposes REST APIs for Druid SQL (POST /druid/v2/sql), native JSON queries (POST /druid/v2), batch and streaming data ingestion tasks, supervisor management for Kafka/Kines...

Collections

Pricing Plans

Rate Limits

Apache Druid Rate Limits

5 limits

RATE LIMITS

FinOps

Features

Sub-Second OLAP Queries

Columnar storage with bitmap indexes, dictionary encoding, and pre-aggregation (rollup) enables sub-second queries on billions of events.

Druid SQL API

REST endpoint for submitting standard SQL queries with ANSI SQL support, time-based filtering, and streaming response options.

Native JSON Query API

Druid-native query format (Timeseries, TopN, GroupBy, Scan, Search) for maximum control and performance.

Streaming Ingestion

Real-time data ingestion from Apache Kafka and Amazon Kinesis with supervisor-managed offset tracking and exactly-once semantics.

Batch Ingestion

Parallel batch indexing tasks from local files, S3, GCS, HDFS, and other external storage systems.

Automatic Rollup

Pre-aggregates metrics at ingestion time to reduce storage and query time, configurable per datasource.

Time-Based Partitioning

All data is partitioned by time interval (segments), enabling efficient time-range query pruning.

Multi-Tenancy

Query isolation and resource management via query lanes, scheduler priorities, and row-level access control.

Use Cases

Real-Time Event Analytics

Analyze click streams, IoT events, application logs, and user behavior data with sub-second query latency.

Business Intelligence Dashboards

Power interactive BI dashboards with high-concurrency low-latency queries backed by Druid's columnar engine.

Network and Security Monitoring

Ingest and analyze network flow data and security events in real time for threat detection and capacity planning.

Ad Tech Analytics

Process advertising impression, click, and conversion events at high volume with real-time aggregation.

Operational Analytics

Monitor application performance metrics and operational data with drilldown and filtering capabilities.

Integrations

Apache Kafka

KafkaSupervisor for real-time continuous ingestion from Kafka topics into Druid datasources.

Amazon Kinesis

KinesisSupervisor for real-time data ingestion from AWS Kinesis data streams.

Apache Hadoop / HDFS

Native Hadoop batch indexing task for bulk loading data from HDFS or MapReduce job outputs.

Amazon S3 / GCS

Batch and streaming ingestion from object storage (S3, GCS, Azure Blob) using index tasks.

Apache Hive

Druid-Hive integration for querying Druid datasources from HiveQL and performing joins.

Kubernetes

Official Kubernetes operator for deploying and managing Druid clusters on Kubernetes.

Imply (Commercial)

Imply provides a commercial managed Druid service with additional features and enterprise support.

Semantic Vocabularies

Apache Druid Context

5 classes · 32 properties

JSON-LD

JSON Structure

Apache Druid Ingestion Task Structure

9 properties

JSON STRUCTURE

Apache Druid Sql Query Request Structure

7 properties

JSON STRUCTURE

Apache Druid Sql Query Response Structure

5 properties

JSON STRUCTURE

Apache Druid Supervisor Structure

8 properties

JSON STRUCTURE

Example Payloads

Resources

🌐
Portal
Portal
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
📰
Blog
Blog
👥
GitHubOrganization
GitHubOrganization
👥
GitHubRepository
GitHubRepository
👥
StackOverflow
StackOverflow
🔗
Vocabulary
Vocabulary

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Apache Druid REST API
  version: '1.0'
items:
- info:
    name: Submit a Druid SQL query
    type: http
  http:
    method: POST
    url: http://localhost:8888/druid/v2/sql
    body:
      type: json
      data: '{}'
  docs: Submit a Druid SQL query
- info:
    name: Cancel a SQL query
    type: http
  http:
    method: DELETE
    url: http://localhost:8888/druid/v2/sql/:sqlQueryId
    params:
    - name: sqlQueryId
      value: ''
      type: path
  docs: Cancel a SQL query
- info:
    name: Submit an asynchronous SQL statement
    type: http
  http:
    method: POST
    url: http://localhost:8888/druid/v2/sql/statements
    body:
      type: json
      data: '{}'
  docs: Submit an asynchronous SQL statement
- info:
    name: Get statement status
    type: http
  http:
    method: GET
    url: http://localhost:8888/druid/v2/sql/statements/:queryId
    params:
    - name: queryId
      value: ''
      type: path
  docs: Get statement status
- info:
    name: Cancel an asynchronous statement
    type: http
  http:
    method: DELETE
    url: http://localhost:8888/druid/v2/sql/statements/:queryId
    params:
    - name: queryId
      value: ''
      type: path
  docs: Cancel an asynchronous statement
- info:
    name: Fetch statement results
    type: http
  http:
    method: GET
    url: http://localhost:8888/druid/v2/sql/statements/:queryId/results
    params:
    - name: queryId
      value: ''
      type: path
  docs: Fetch statement results
- info:
    name: Mark all segments of a datasource as used
    type: http
  http:
    method: POST
    url: http://localhost:8888/druid/indexer/v1/datasources/:datasource
    params:
    - name: datasource
      value: ''
      type: path
  docs: Mark all segments of a datasource as used
- info:
    name: Mark all segments of a datasource as unused
    type: http
  http:
    method: DELETE
    url: http://localhost:8888/druid/indexer/v1/datasources/:datasource
    params:
    - name: datasource
      value: ''
      type: path
  docs: Mark all segments of a datasource as unused
- info:
    name: Mark segments matching criteria as used
    type: http
  http:
    method: POST
    url: http://localhost:8888/druid/indexer/v1/datasources/:datasource/markUsed
    params:
    - name: datasource
      value: ''
      type: path
    body:
      type: json
      data: '{}'
  docs: Mark segments matching criteria as used
- info:
    name: Mark segments matching criteria as unused
    type: http
  http:
    method: POST
    url: http://localhost:8888/druid/indexer/v1/datasources/:datasource/markUnused
    params:
    - name: datasource
      value: ''
      type: path
    body:
      type: json
      data: '{}'
  docs: Mark segments matching criteria as unused
- info:
    name: Mark a specific segment as used
    type: http
  http:
    method: POST
    url: http://localhost:8888/druid/indexer/v1/datasources/:datasource/segments/:segmentId
    params:
    - name: datasource
      value: ''
      type: path
    - name: segmentId
      value: ''
      type: path
  docs: Mark a specific segment as used
- info:
    name: Mark a specific segment as unused
    type: http
  http:
    method: DELETE
    url: http://localhost:8888/druid/indexer/v1/datasources/:datasource/segments/:segmentId
    params:
    - name: datasource
      value: ''
      type: path
    - name: segmentId
      value: ''
      type: path
  docs: Mark a specific segment as unused
- info:
    name: Mark segments in an interval as unused
    type: http
  http:
    method: DELETE
    url: http://localhost:8888/druid/coordinator/v1/datasources/:datasource/intervals/:interval
    params:
    - name: datasource
      value: ''
      type: path
    - name: interval
      value: ''
      type: path
  docs: Mark segments in an interval as unused
bundled: true