SQL on the data you already have

Apache Drill is a distributed SQL engine for files, object storage and NoSQL databases. Point it at a directory, a bucket or a collection and query it in place, with nothing loaded and no schema declared.

Released June 28, 2025 · Mac, Linux and Windows · Apache License 2.0

Drill QueryProfilesStorageMetrics s3
-- a prefix full of JSON. no table, no schema
SELECT country, count(*) AS hits
FROM   s3.`logs/2025/*.json`
GROUP BY country ORDER BY 2 DESC;
Completed in 1.41 s
countryhits
United States418,203
India233,944
Germany96,510
822,845 records scanned · 1.41 s · 6 minor fragments

Used in production

Ericsson Intuit TransUnion Ant Financial RedBus Sanchez Energy IORA, NUS

See how they use Drill

Agility

No data loading, no schema creation and maintenance, no transformations standing between a question and an answer.

Flexibility

Query multi-structured and nested data in non-relational stores directly, without flattening or restricting it first.

Familiarity

ANSI SQL:2003 with ODBC and JDBC drivers, so existing skills and BI tools work unchanged.

Point and query

Traditional SQL-on-Hadoop engines need the data prepared before anyone can ask a question. Drill removes those steps rather than automating them.

Apache DrillHive, Impala and similar
User experience Point and query Ingest the data, define schemas, maintain them, then query
Use case Self-service, in-situ, SQL-based analytics Data warehouse offload
Data sources Files, object storage, NoSQL and relational databases, several at once in one query A single Hadoop cluster
Data model Schema-free JSON, the same model as MongoDB Relational, fixed schema

Nested data stays nested

Drill is the only columnar execution engine that handles complex, schema-free data. Documents are shredded into an in-memory columnar representation, so nested JSON runs at columnar speed without being flattened first.

  • Queries compile and recompile at runtime, so performance does not depend on knowing the shape of the data in advance.
  • Vectorised execution using the SIMD instructions in modern processors.
  • Memory is managed off-heap, so long queries are not interrupted by garbage collection.
  • A cost-based optimizer pushes filters and projections down into the source.
-- reach into a nested document without flattening it
SELECT t.payload.device.os     AS os,
       t.payload.device.model  AS model,
       count(*)                AS sessions
FROM   dfs.`/events/2025/*.json` t
WHERE  t.payload.app.version > '4.2'
GROUP BY 1, 2
ORDER BY 3 DESC;

-- join a Mongo collection to a directory of logs
SELECT u.plan, sum(e.bytes)
FROM   mongo.web.users u
JOIN   dfs.`/events/` e ON e.uid = u._id
GROUP BY u.plan;

Running in two minutes

Download the tarball, unpack it and start Drill in embedded mode. It runs on a laptop and on a cluster of thousands of nodes with the same symmetrical architecture.

$ tar xzf apache-drill-1.22.0.tar.gz
$ cd apache-drill-1.22.0
$ bin/drill-embedded

apache drill> SELECT * FROM dfs.`~/Downloads/*.csv` LIMIT 3;
-- nothing was loaded to make that work