Apache Drill 1.22.0 介绍与选型指南
Apache Drill 1.22.0 认知篇:schema-free 分布式 SQL 引擎的 Drillbit 架构、存储插件体系、官方 10 分钟快速上手示例与 Presto/Trino/DuckDB 选型对比,信息基于官方来源联网溯源(查询日期 2026-10-18)。
Apache Drill 1.22.0 介绍与选型指南
目标:本篇为 A1 认知篇,基于 Apache Drill 官方网站、GitHub 官方仓库 Release 与官方文档联网溯源整理(查询日期 2026-10-18),不涉及本地安装实测;本地安装实测属 B1 安装指南职责。
一、信息基准
1.1 查询日期与版本依据
| 项目 | 内容 |
|---|---|
| 查询日期 | 2026-10-18 |
| 本次介绍版本 | Apache Drill 1.22.0(官方最新稳定版) |
| 版本依据 | GitHub 官方仓库 apache/drill releases/latest 实查:tag drill-1.22.0,发布时间 2025-06-29 |
| Java 支持 | 1.22.0 官方 Release Notes 明示:Java 大版本支持调整为 Java 11、17、21,并移除 Hadoop 2 发行版(来源:1.22.0 Release 说明,查询日期 2026-10-18) |
1.2 官方来源清单
| 来源 | URL |
|---|---|
| 项目主页 | https://drill.apache.org/ |
| 官方文档 | https://drill.apache.org/docs/ |
| Drill in 10 Minutes | https://drill.apache.org/docs/drill-in-10-minutes/ |
| GitHub 官方仓库 | https://github.com/apache/drill |
| 1.22.0 Release | https://github.com/apache/drill/releases |
| 安装指引 | https://drill.apache.org/docs/installing-drill-in-embedded-mode/ |
二、软件概述
本文介绍 Apache Drill 1.22.0(最新稳定版,2025-06-29 发布)。Drill 是一款开源的分布式 SQL 查询引擎,主打"无 schema(schema-free)即查":无需预先建表、无需 ETL 落地,即可对 JSON、Parquet、CSV 等自描述/半结构化文件以及 HDFS/S3、Hive、HBase、Kafka、关系库(JDBC)等数据源直接下发标准 SQL 查询。Drill 遵循 SQL:2011 标准并针对嵌套数据做了方言扩展,架构上由一组对等的 Drillbit 进程组成,支持内嵌(embedded)与分布式(distributed)两种运行模式(来源:drill.apache.org/docs/drill-in-10-minutes/,查询日期 2026-10-18)。
- 许可:Apache License 2.0。
- 维护方:Apache Software Foundation 顶级项目(源自 MapR,2014 年进入 ASF 孵化并毕业)。
- 形态:独立服务/进程(Drillbit),无独立持久化存储,数据留在原系统。
- 社区活跃度:GitHub 2027 stars / 988 forks,主分支最近推送 2026-10-14(查询日期 2026-10-18,GitHub API 实查)。
三、核心架构与核心概念
3.1 架构
| 组件 | 职责 |
|---|---|
| Drillbit | 核心服务进程,承担 SQL 解析、规划(cost-based optimizer)、分布式执行与本地数据访问;节点间对等(无主从),客户端经 JDBC/ODBC 连接任意 Drillbit |
| ZooKeeper | 分布式模式下用于集群发现与状态协调(内嵌模式使用 zk=local) |
| Web Console | 每个 Drillbit 内置 HTTP 控制台(默认 8047),查看查询 profile、存储插件配置 |
| Storage Plugin | 数据源适配层:文件系统(本地/HDFS/S3)、Hive、HBase、Kafka、MongoDB、JDBC、HTTP 等,插件配置决定"数据在哪、怎么读" |
3.2 核心概念
- Schema-free 查询:同一列可容纳异构类型,字段缺失即 NULL;无需上游建表即可查询 JSON/Parquet。
cp插件:classpath 存储插件,指向 Drill 发行包内置示例数据目录(如cp.employee.json),常用于快速验证。- 动态列与嵌套访问:以
tbl.field.subfield点路径访问嵌套结构,配合FLATTEN/KVGEN等函数处理变长结构。 - UDF 动态加载:无需重启集群即可注册自定义函数。
四、功能特性
以下特性均可在官方文档与 1.22.0 Release Notes 查证(查询日期 2026-10-18):
| 特性域 | 说明 |
|---|---|
| 标准 SQL | SQL:2011 + 嵌套数据扩展,JDBC/ODBC 驱动接入 BI 工具 |
| 多数据源直查 | 文件(JSON/Parquet/CSV/TSV/PSV/AVRO)、HDFS/S3、Hive、HBase、Kafka、MongoDB、JDBC、HTTP、Splunk 等存储插件 |
| 分布式执行 | 多 Drillbit 对等集群,查询自动并行切分(Fragments)与汇聚 |
| 安全与权限 | Kerberos/认证、行级过滤与列掩码(Views + 政策函数)、会话/系统级参数 |
| 1.22.0 变更亮点 | Java 11/17/21 支持、移除 Hadoop 2 发行版、大量第三方依赖安全升级、File/HTTP/Splunk/XML 插件增强 |
- 1.22.0 后未见更高版本发布(截至查询日 releases/latest 仍为 1.22.0),版本节奏约为年级大版本 + 补丁。
五、快速上手(引自官方文档,不本地实测)
官方 "Drill in 10 Minutes" 以内嵌模式体验(原文引自 https://drill.apache.org/docs/drill-in-10-minutes/ ,查询日期 2026-10-18):
- 下载解压:从官方下载页获取二进制包并解压(官方示例命令):
tar -xvzf <.tar.gz file name>
cd apache-drill-<version>
- 以内嵌模式启动(官方原文命令):
bin/drill-embedded
启动后出现 0: jdbc:drill:zk=local> 提示符(官方回显)。
- 查询内置示例数据(官方原文 SQL 与回显节选):
SELECT * FROM cp.`employee.json` LIMIT 3;
官方文档回显(节选):
| employee_id | full_name | first_name | last_name | ... |
|--------------|------------------|-------------|------------|-----|
| 1 | Sheri Nowmer | Sheri | Nowmer | ... |
| 2 | Derrick Whelply | Derrick | Whelply | ... |
| 4 | Michael Spence | Michael | Spence | ... |
说明:内嵌模式单进程即可完成体验;分布式模式(多 Drillbit + ZooKeeper)的安装与部署见官方文档 Installing Drill in Distributed Mode 与本专栏 B1 安装指南。1.22.0 的 Java 运行环境要求以 Release Notes(Java 11/17/21)为准。
六、适用场景与限制
6.1 适用场景
- 数据湖/文件湖 ad-hoc 探索:数据科学家/分析师直接对 S3/HDFS 上的 JSON/Parquet/CSV 下发 SQL,零建模起步。
- 多源联邦即席查询:一个引擎同时查 Hive、Kafka、MongoDB、JDBC 关系库,替代"每源一套脚本"。
- 嵌套半结构化数据分析:JSON 多层结构与 schema 演进频繁的日志类数据。
- 原型验证:内嵌模式 10 分钟起步,适合 PoC 与本地开发。
6.2 限制与风险
- 面向分析型即席查询,不追求高并发在线报表;无内置持久化与物化能力,性能依赖底层数据组织(Parquet 分区等)。
- 社区规模与活跃度中等(2000+ stars),版本节奏慢(1.21 → 1.22 间隔约一年半,查询日期 2026-10-18),路线图推进不及 Trino/DuckDB。
- 复杂资源隔离与多租户治理能力有限,大规模生产建议搭配 YARN/K8s 资源管控并谨慎评估。
- 无 schema 意味着"灵活性换确定性":类型推断错误与脏数据问题需在查询侧处理。
七、同类选型对比
对比维度:许可、社区活跃度(GitHub stars + 最近发版)、版本节奏、兼容矩阵。数据为 GitHub API 实查,查询日期 2026-10-18。
| 项目 | 定位 | 许可 | GitHub stars | 最近发版(2026-10-18 实查) | 兼容矩阵 |
|---|---|---|---|---|---|
| Apache Drill 1.22.0 | schema-free 分布式 SQL 查询引擎 | Apache-2.0 | 2027(apache/drill) | 1.22.0(2025-06-29) | Java 11/17/21;JDBC/ODBC;文件/HDFS/S3/Hive/HBase/Kafka/JDBC/HTTP 插件 |
| Presto | 分布式联邦查询引擎(Facebook 系起源) | Apache-2.0 | 16762(prestodb/presto) | 0.299(2026-08-28) | 数百种 Connector;ANSI SQL;社区版本节奏快 |
| Trino | Presto 的社区延续分支,联邦查询事实主流 | Apache-2.0 | 13343(trinodb/trino) | 484(2026-10-16) | 丰富 Connector 生态;周度发版;无 Hadoop 依赖 |
| DuckDB | 嵌入式分析型 SQL 引擎(单机进程内) | MIT | 42232(duckdb/duckdb) | v1.5.6(2026-09-28) | 进程内库/CLI;Parquet/CSV/JSON 直查;扩展生态活跃 |
选型建议:需要分布式联邦查询与活跃生态时优先 Trino(社区延续最快、Connector 最全);老 Hadoop/Hive 体系且已用 Presto 的场景继续 Presto;单机分析/嵌入式场景直接选 DuckDB(体量小、性能强、许可宽松);仅当强调"不建表直接查 JSON/嵌套数据 + 内嵌单进程起步"的 Drill 特有组合,或维护既有 Drill 集群时选 Drill,并接受其较慢的演进节奏。
八、参考链接
- 项目主页:https://drill.apache.org/
- 官方文档:https://drill.apache.org/docs/
- Drill in 10 Minutes(快速上手出处):https://drill.apache.org/docs/drill-in-10-minutes/
- 内嵌模式安装:https://drill.apache.org/docs/installing-drill-in-embedded-mode/
- GitHub 官方仓库:https://github.com/apache/drill
- 1.22.0 Release Notes:https://github.com/apache/drill/releases
- 官方下载页:https://drill.apache.org/download.html