Apache Drill 连接 MySQL 或 PostgreSQL 数据库

Drill 连接 MySQL 或 PostgreSQL 数据库需要通过 配置 JDBC 存储插件 实现,核心是通过 JDBC 驱动连接外部数据库。以下是详细步骤(基于 Web UI 操作,无需手动修改配置文件):

前置条件

1.确保 MySQL/PostgreSQL 数据库已启动,且网络通畅(Drill 所在机器能访问数据库端口,如 MySQL 默认 3306,PostgreSQL 默认 5432)。

2.准备数据库的 连接信息:主机 IP(或域名)、端口、数据库名、用户名、密码。

3.下载对应数据库的 JDBC 驱动(Drill 需通过驱动连接数据库):

MySQL :下载 MySQL Connector/J(选择与数据库版本兼容的驱动,如 8.0.x 或 5.1.x)

PostgreSQL :下载 PostgreSQL JDBC Driver(选择与数据库版本兼容的驱动,如 42.2.x)

步骤 1:放置 JDBC 驱动到 Drill 目录

Drill 需要加载数据库的 JDBC 驱动才能建立连接,需将下载的驱动 JAR 包放到 Drill 的第三方库目录:

  1. 解压下载的驱动包,得到 JAR 文件(如mysql-connector-java-8.0.33.jar或postgresql-42.2.20.jar)。
  2. 将 JAR 文件复制到 Drill 安装目录的 jars/3rdparty 文件夹下:
bash 复制代码
# 示例(替换为你的Drill路径和驱动文件名)
sudo cp /path/to/mysql-connector-java-8.0.33.jar /opt/drill-1.21.2/jars/3rdparty/

3.重启 Drill 使驱动生效(先在 Drill 交互界面输入 !quit 退出,再重新启动 bin/drill-embedded)。

步骤 2:通过 Web UI 配置存储插件

  1. 打开 Drill Web UI(http://localhost:8047),点击左侧导航栏的 Storage(存储插件管理)。
  2. 在存储插件页面,点击右上角的 Create(创建新插件)。
场景 A:连接 MySQL 数据库
  1. 在 Plugin Name 输入框中自定义插件名称(如 mysql,小写无空格)。

  2. 在配置编辑框中粘贴以下 JSON 配置,替换占位符为你的 MySQL 信息:

    bash 复制代码
    {
      "type": "jdbc",
      "driver": "com.mysql.cj.jdbc.Driver",  // MySQL 8.0+用此驱动;5.x版本用"com.mysql.jdbc.Driver"
      "url": "jdbc:mysql://<MySQL主机IP>:<端口>/<数据库名>?useSSL=false&serverTimezone=UTC",  // 如jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&serverTimezone=UTC
      "username": "<MySQL用户名>",  // 如root
      "password": "<MySQL密码>",    // 如123456
      "enabled": true
    }
  3. 点击页面底部的 Create 按钮保存配置。

  4. 配置成功后,插件列表中会显示 mysql,状态为 ENABLED(绿色)。

场景 B:连接 PostgreSQL 数据库
  1. 在 Plugin Name 输入框中自定义插件名称(如 postgresql)。

  2. 在配置编辑框中粘贴以下 JSON 配置,替换占位符为你的 PostgreSQL 信息:

    复制代码
    {
      "type": "jdbc",
      "driver": "org.postgresql.Driver",  // PostgreSQL固定驱动类
      "url": "jdbc:postgresql://<PostgreSQL主机IP>:<端口>/<数据库名>",  // 如jdbc:postgresql://127.0.0.1:5432/mydb
      "username": "<PostgreSQL用户名>",  // 如postgres
      "password": "<PostgreSQL密码>",    // 如123456
      "enabled": true
    }
  3. 点击 Create 按钮保存配置,插件列表中会显示 postgresql,状态为 ENABLED。

步骤 3:验证连接是否成功

通过 Drill 的 SQL 交互界面(Web UI 或终端)执行查询,验证是否能访问数据库表。

方式 1:通过 Web UI 的 Query Editor 验证
  1. 在 Drill Web UI 点击左侧 Query。
  2. 输入查询语句(格式:SELECT * FROM <插件名>.<表名> LIMIT 10;):
    • MySQL 示例:SELECT * FROM mysql.user LIMIT 10;(查询 MySQL 的 user 表)
    • PostgreSQL 示例:SELECT * FROM postgresql.pg_tables LIMIT 10;(查询 PostgreSQL 的系统表)
  3. 点击 Run 按钮,若返回数据,说明连接成功。
方式 2:通过终端的 Drill 交互界面验证
  1. 在终端中进入 Drill 交互模式(已启动drill-embedded的情况下)。

  2. 执行类似查询:

    复制代码
    -- MySQL
    SELECT * FROM mysql.`user` LIMIT 10;  -- 表名若含特殊字符,用反引号包裹
    
    -- PostgreSQL
    SELECT * FROM postgresql.pg_tables LIMIT 10;

    若返回结果,说明连接正常。

相关推荐
小徐不徐说1 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场2 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__3 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁4 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk5 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW6 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB6 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_6 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
瀚高PG实验室7 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库
龙腾AI白云7 小时前
大模型检索增强生成(RAG)的技术原理与架构设计
数据库·python·机器学习·知识图谱