7

我想通过 Java 应用程序连接到 Drill,到目前为止,我一直在尝试使用 JDBC 来执行此操作,并且我正在使用来自https://github.com/vicenteg/DrillJDBCExample的示例,但是......当我更改 DB_URL 静态变量 “jdbc:drill:zk = local”并启动应用程序我得到异常:

java.sql.SQLNonTransientConnectionException: 不支持单独使用 Drill 的 jdbc-all JDBC 驱动 Jar 文件以嵌入式模式运行 Drill。

到目前为止,我还没有找到任何解决方法。知道如何以嵌入式模式连接到 Drill 吗?到目前为止,我不想设置分布式模式。

在网络上确实没有太多关于它的内容。

任何帮助,将不胜感激!

4

4 回答 4

11

如果您要连接到本地嵌入式实例(没有 Zookeeper),您应该直接使用 Drillbit 主机,例如:

jdbc:drill:drillbit=<drillbit-host>:[port]

例如: jdbc:drill:drillbit=localhost

于 2015-09-21T21:04:58.143 回答
7

TLDR: jdbc:drill:drillbit=localhost:31010

首先尝试使用 SQuirreL SQL 客户端。

我正在使用运行 linux 和 apache 的 vm 执行此操作,如果这一切都在一台主机上,您可以用 localhost 替换。

首先开始在您的虚拟机或主机上嵌入钻孔,例如:

/opt/apache-drill-1.1.0/bin/drill-embedded

这将启动嵌入式外壳。检查端口是否打开 - 它看起来与 Zookeeper 等的默认值不同:

sroot@localhost:/opt/apache-drill-1.1.0/bin [1089] netstat -anp | grep 31010

tcp 0 0 ::ffff:0.0.0.0:31010 :::* LISTEN 12934/java

您应该能够远程登录 localhost 31010 到此端口。

您必须按照此处所述设置 jar 驱动程序: https ://drill.apache.org/docs/using-jdbc-with-squirrel-on-windows/

确保带有驱动程序的 jar 是可执行的。

但是用下面的修改字符串 - 没有动物园管理员,它不同,例如在松鼠中应该看起来像这样(也感谢上面的其他答案

jdbc:drill:drillbit=localhost:31010

您可以用上面的 ip 替换 localhost - 然后测试连接。

我使用的jar是drill-jdbc-all-1.1.0.jar,类名是org.apache.drill.jdbc.Driver

松鼠驱动程序配置示例

于 2015-10-30T18:26:10.993 回答
1

我不认为你使用正确的罐子。看来您正在使用 jdbc-all-jar。有两个罐子。您需要添加另一个 jar 以使其工作。添加了maven pom。这应该让你去

<dependency>
      <groupId>org.apache.drill.exec</groupId>
      <artifactId>drill-jdbc</artifactId>
      <version>1.1.0</version>
    </dependency>
于 2015-08-03T09:12:58.177 回答
0

您需要在您的 java 项目中添加以下依赖项(我假设基于 maven

<dependency>
    <groupId>org.apache.drill.exec</groupId>
    <artifactId>drill-jdbc</artifactId>
    <version>1.4.0</version>
</dependency>

示例代码(假设您想在嵌入式模式下运行钻):

Class.forName("org.apache.drill.jdbc.Driver");
Connection connection =DriverManager.getConnection("jdbc:drill:zk=localhost");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT * from cp.`employee`");
while(rs.next()){
System.out.println(rs.getString(1));
}

如果您已经开始钻(假设钻在本地机器上运行)。然后你应该改变连接:

Connection connection =DriverManager.getConnection("jdbc:drill:drillbit=localhost");

检查示例项目:https ://github.com/devender-yadav/DrillJDBC

注意:我已经针对 Drill 1.2、1.3 和 1.4 进行了测试

于 2015-11-28T07:43:46.223 回答