RDBMS 存储插件

Apache Drill 支持查询关系型数据库。允许你连接到传统的数据库。在 Drill 集群中,你既能连接到关系型数据库,又能连接到 NoSQL 数据库。

与任何来源一样,Drill 支持所有系统之间的连接。另外,Drill 针对 RDBMS 具有强大的 pushdown 能力。这包含 JOIN,WHERE,GROUP BY,INTERSECT 和其他的 SQL 操作在一个特定的 RDBMS 数据源中。

使用 RDBMS 存储插件

Drill 设计能工作在任何的关系型数据库,只需提供一个 JDBC 驱动即可。Drill 支持 Postgres,MySQL,Oracle,MSSQL 和 Apache Derby。对于每个系统,你需要以下基本的三步:

  1. 如果你没有安装 Drill,需要先安装 Drill。
  2. 复制数据库的 JDBC 驱动到 jars/3rdparty 目录。(每个节点都需要这样做。)
  3. 通过 Drill WebUI 增加一个新的存储配置。例如,配置 Oracle,SQL Server,MySQL 和 Postgres。

示例:MySQL

Drill 和 MySQL 进行数据交互是通过 JDBC 驱动来完成的,通过在 Web 控制台配置对应的连接信息或是通过 REST API。

  1. 提示:配置 JDBC 存储插件时,确保 MySQL 是正在运行的,以及 MySQL 驱动是存在对应的目录下。

设置 JDBC 存储插件:

  1. 启动 Drill Shell。
  2. 打开 Web 控制台。
  3. 在存储插件栏,输入新的存储插件名称。例如,输入 myplugin。配置的存储插件名称必需是唯一的。名称区分大小写。
    1. 提示:URL 依赖你的安装和配置,可以参考示例配置。
  4. 点击 “Create”。
  5. 在配置时,以 JSON 的格式,设置需要的属性。示例配置如下所示:
    1. {
    2. "type": "jdbc",
    3. "driver": "com.mysql.jdbc.Driver",
    4. "url": "jdbc:mysql://localhost:3306",
    5. "username": "root",
    6. "password": "mypassword",
    7. "enabled": true
    8. }
  6. 点击 “Create”。

你可以使用 performance_schema 数据库,在安装 MySQL 后使用你的 performance_schema 数据库。包含存储插件配置的名称,数据库,表,在 FROM 语法的后面,如下所示:

  1. 0: jdbc:drill:zk=local> select * from myplugin.performance_schema.accounts;
  2. +--------+------------+----------------------+--------------------+
  3. | USER | HOST | CURRENT_CONNECTIONS | TOTAL_CONNECTIONS |
  4. +--------+------------+----------------------+--------------------+
  5. | null | null | 18 | 20 |
  6. | jdoe | localhost | 0 | 813 |
  7. | root | localhost | 3 | 5 |
  8. +--------+------------+----------------------+--------------------+
  9. 3 rows selected (0.171 seconds)

示例配置

示例 Oracle 配置

下载安装 Oracle 的 ojdbc7.12.1.0.2.jar 驱动,并复制它到集群的所有节点中。

  1. {
  2. type: "jdbc",
  3. enabled: true,
  4. driver: "oracle.jdbc.OracleDriver",
  5. url:"jdbc:oracle:thin:user/password@1.2.3.4:1521/ORCL"
  6. }

示例 SQL Server 配置

对于 SQL Server,Drill 已经测试过了微软的 sqljdbc41.4.2.6420.100.jar 驱动。复制该 jar 文件到所有的 Drillbit。

  1. 提示:你需要提供一个数据库名称作为 JDBC 连接字符串的一部分,用于正确的展示 MSSQL schemas
  1. {
  2. type: "jdbc",
  3. enabled: true,
  4. driver: "com.microsoft.sqlserver.jdbc.SQLServerDriver",
  5. url:"jdbc:sqlserver://1.2.3.4:1433;databaseName=mydatabase",
  6. username:"user",
  7. password:"password"
  8. }

示例 MySQL 配置

对于 MySQL,Drill 已经测试过了 MySQL 的 mysql-connector-java-5.1.37-bin.jar 驱动。复制它到所有的节点。

  1. {
  2. type: "jdbc",
  3. enabled: true,
  4. driver: "com.mysql.jdbc.Driver",
  5. url:"jdbc:mysql://1.2.3.4",
  6. username:"user",
  7. password:"password"
  8. }

示例 Postgres 配置

对于 Postgres,Drill 已经测试过了 Postgres 的 9.1-901-1.jdbc4 驱动(任何最近的驱动都能够工作)。复制该驱动文件到所有的节点。

  1. 提示:你需要提供一个数据库名称作为 JDBC 连接字符串的一部分,用于正确展示 Postgres 表。
  1. {
  2. type: "jdbc",
  3. enabled: true,
  4. driver: "org.postgresql.Driver",
  5. url:"jdbc:postgresql://1.2.3.4/mydatabase",
  6. username:"user",
  7. password:"password"
  8. }