我想通过Java应用程序连接到Drill,到目前为止,我尝试使用JDBC来执行此操作,并且我正在使用https://developers.facebook.com/docs/apps/changelog#v2_0中的示例,但是...... 当我将DB_URL静态变量更改为“jdbc:drill:zk = local”并启动应用程序时会出现异常:
到目前为止,我没有找到任何解决方法。知道如何在嵌入模式下连接Drill吗?到目前为止,我不想设置分布式模式。java.sql.SQLNonTransientConnectionException:不支持使用Drill的jdbc-all JDBC驱动程序Jar文件在嵌入模式下运行。
网上真的没什么关系。
任何帮助将不胜感激!
答案 0 :(得分:8)
如果要连接到本地嵌入式实例(没有Zookeeper),则应直接使用drillbit主机,如:
// VER: 0.1
/* OVERRIDDEN BOOTSTRAP VARIABLES */
$icon-font-path: "../fonts/bootstrap/";
/* STANDARD INCLUDES */
@import "bootstrap-compass";
@import "bootstrap-sprockets";
@import "bootstrap";
@import "compass/css3";
/* CUSTOM FONT IMPORT */
@include font-face(
"Nexa Heavy",
inline-font-files(
'../fonts/nexa-webfont/nexaheavy-webfont.woff', woff,
'../fonts/nexa-webfont/nexaheavy-webfont.ttf', ttf,
'../fonts/nexa-webfont/nexaheavy-webfont.svg', svg),
'../fonts/nexa-webfont/nexaheavy-webfont.eot',
normal, // font-weight
normal // font-style
);
/* CUSTOM INCLUDES */
@import "custom-variables";
@import "common";
@import "navigation";
@import "footer";
@import "pages/home";
例如:
jdbc:drill:drillbit=<drillbit-host>:[port]
答案 1 :(得分:6)
TLDR: 的 JDBC:钻头:钻头=本地主机: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是可执行的。
但是用下面的字符串修改字符串 - 没有zookeeper就不一样了,例如在squirrel中应该看起来像这样(感谢上面的其他答案)
<强> JDBC:钻头:钻头=本地主机:31010 强>
你可以用上面的ip替换localhost - 然后测试连接。
我使用的jar是drill-jdbc-all-1.1.0.jar,类名是org.apache.drill.jdbc.Driver
答案 2 :(得分:1)
我不认为你使用正确的罐子。看来你正在使用jdbc-all-jar。有两个罐子。您需要添加其他jar才能使其正常工作。添加了maven pom。这应该让你去
<dependency>
<groupId>org.apache.drill.exec</groupId>
<artifactId>drill-jdbc</artifactId>
<version>1.1.0</version>
</dependency>
答案 3 :(得分: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进行了测试