使用 JDBC 驱动
该模块阐述如何在 Apache Drill 中安装 JDBC 驱动。为了使用 JDBC 驱动,你需执行:
- 查看先决条件。
- 获取 Drill 的 JDBC 驱动。
- 放入 JDBC 驱动 jar 文件到 classpath。
- 使用一个可用到 URL 到 JDBC 连接字符串中,当你写入到应用代码或是配置 BI 工具时。
- 使用 Drill 驱动类名到应用代码或是配置客户端工具。
大多数客户端工具提供一个 UI 用于提供输入连接信息,包含驱动位置,连接 URL,和驱动类名。连接 Drill 的客户端工具可以通过 JDBC,详看使用 JDBC 到 SQuirreL 和配置 Spotfire 服务。
先决条件
- JRE 7 或 JDK 7
- Drill 安装
- 描述安装 Drill JDBC 驱动到 JReport 的四个步骤
得到 Drill JDBC 驱动
Drill JDBC 驱动的 JAR 文件必须存在一个客户端机器中,以至于你能够配置驱动到应用或第三方工具中。获得驱动有以下方式:
- 拷贝
drill-jdbc-all
JAR 文件到 Drill 的安装目录的节点。
或者<drill_installation_directory>/jars/jdbc-driver/drill-jdbc-all-<version>.jar
- 下载以下 TAR 文件到本地的客户端:apache- drill-1.0.0.tar.gz。解压文件。在 Windows 中,你可能需要使用解压工具,例如 7-zip。驱动抽取到以下目录:
<drill-installation_directory>/jars/jdbc-driver/drill-jdbc-all-<version>.jar
使用 JDBC 连接 Drillbit
对于 JDBC 的 URL 格式略有不同,这取决于你想连接到 Drill 的方式:随机,本地,或是直接。本节涵盖了使用的网址为随机或本地连接。使用 URL 直接连接到 Drill 上后。如果你想让它来随机选择 Drill 的集群,或者如果你想连接到当地的 Drill,驱动程序的 URL 格式:
jdbc:drill:zk=<zk name>[:<port>][,<zk name2>[:<port>]...
<directory>/<cluster ID>;[schema=<storage plugin>]
这里:
jdbc
是连接类型。需要。schema
是存储插件的名称,用于配置使用默认的类型。例如:schema=hive
。可选。zk name
指定一个或多个 ZooKeeper 的主机名,或是 IP 地址。使用local
代替主机名或 IP 地址去连接本地的 Drillbit。需要。port
是 ZooKeeper 的端口号。端口 2181 是默认的。在 MapR 集群上,默认是 5181.可选。directory
是 Drill 在 ZooKeeper 中的目录,它默认在/drill
。可选。cluster ID
默认是drillbits1
。如果默认被修改,确定集群 ID,并使用它。可选。
确认集群 ID
确认集群 ID,需检查以下文件:
<drill-installation>/conf/drill-override.conf
例如:
...
drill.exec: {
cluster-id: "docs41cluster-drillbits",
zk.connect: "centos23.lab:5181,centos28.lab:5181,centos29.lab:5181"
}
...
使用例子
单节点安装
jdbc:drill:zk=maprdemo:5181
jdbc:drill:zk=centos23.lab:2181/drill/docs41cluster-drillbits
jdbc:drill:zk=10.10.100.56:2181/drill/drillbits1;schema=hive
集群安装
jdbc:drill:zk=10.10.100.30:5181,10.10.100.31:5181,10.10.100.32:2181/drill/drillbits1;schema=hive
使用 JDBC 的 URL 格式直接连接 Drillbit
如果你想直接连接 Drillbit 替代用 ZooKeeper 去选择 Drillbit,替换 zk=<zk name>
为 drillbit=<node>
,格式如下所示:
jdbc:drill:drillbit=<node name>[:<port>][,<node name2>[:<port>]...
<directory>/<cluster ID>[schema=<storage plugin>]
这里:drillbit=<node name>
指定正在运行的 Drill 集群上的一个或更多主机名或是 IP 地址
使用 Drill 驱动类名
类名驱动是 org.apache.drill.jdbc.Driver。更多详细信息,可以参考 Apache Drill JDBC 驱动版本 1.2.0 (Javadoc)[http://drill.apache.org/api/1.2/jdbc/]。
连接 Drill 的编程示例代码
以下简单的代码展示去使用类名和 Drill-Jdbc-all 驱动去连接 Drill:
Class.forName("org.apache.drill.jdbc.Driver");
Connection connection =DriverManager.getConnection("jdbc:drill:zk=
node3.mynode.com:2181/drill/my_cluster_com-drillbits");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT * from cp.`employee`");
while(rs.next()){
System.out.println(rs.getString(1));
}