sus*_*noo 5 java jdbc apache-drill
我想通过Java应用程序连接到Drill,到目前为止我尝试使用JDBC来执行此操作,并且我使用的是https://github.com/vicenteg/DrillJDBCExample中的示例,但是...当我更改DB_URL静态时变量为 "jdbc:drill:zk = local"并启动app我得到异常:
java.sql.SQLNonTransientConnectionException:不支持使用Drill的jdbc-all JDBC驱动程序Jar文件在嵌入模式下运行钻取.
到目前为止,我没有找到任何解决方法.知道如何在嵌入模式下连接Drill吗?到目前为止,我不想设置分布式模式.
网上真的没什么关系.
任何帮助,将不胜感激!
如果要连接到本地嵌入式实例(没有Zookeeper),则应直接使用drillbit主机,如:
jdbc:drill:drillbit=<drillbit-host>:[port]
Run Code Online (Sandbox Code Playgroud)
例如:
jdbc:drill:drillbit=localhost
TLDR: jdbc:drill:drillbit = localhost:31010
首先尝试使用SQuirreL SQL客户端.
我正在使用运行linux和apache的vm执行此操作,如果这一切都在一个主机上,则可以使用localhost替换.
首先在您的虚拟机或主机上嵌入钻孔,例如:
/opt/apache-drill-1.1.0/bin/drill-embedded
这将启动嵌入式shell.检查端口是否打开 - 它看起来与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 telnet到此端口.
您必须按照此处的说明设置jar驱动程序:https: //drill.apache.org/docs/using-jdbc-with-squirrel-on-windows/
确保带有驱动程序的jar是可执行的.
但修改下面的字符串 - 没有动物园管理员的不同,例如松鼠应该看起来像这样(感谢上面的其他答案)
JDBC:钻头:钻头=本地主机:31010
你可以用上面的ip替换localhost - 然后测试连接.
我正在使用的jar是drill-jdbc-all-1.1.0.jar,类名是org.apache.drill.jdbc.Driver
小智 1
我认为你使用的罐子不正确。看来您正在使用jdbc-all-jar。有两个罐子。您需要添加其他 jar 才能使其工作。已经添加了maven pom。这应该可以让你继续
<dependency>
<groupId>org.apache.drill.exec</groupId>
<artifactId>drill-jdbc</artifactId>
<version>1.1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)