How to connect Hbase With JDBC driver of Apache Drill programmatically
我试图以编程方式使用Apache Drill的JDBC驱动程序。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import java.sql.DriverManager object SearchHbaseWithHbase { def main(args: Array[String]): Unit = { Class.forName("org.apache.drill.jdbc.Driver") val zkIp ="192.168.3.2:2181" val connection = DriverManager.getConnection(s"jdbc:drill:zk=${zkIp};schema:hbase") connection.setSchema("hbase") println(connection.getSchema) val st = connection.createStatement() val rs = st.executeQuery("SELECT * FROM Label") while (rs.next()){ println(rs.getString(1)) } } } |
我已将数据库模式设置为类型:hbase,例如:
1 | connection.setSchema("hbase") |
但是它失败,并显示错误代码:
Exception in thread"main" java.sql.SQLException: VALIDATION ERROR:
From line 1, column 15 to line 1, column 19: Table 'Label' not found
SQL Query null
Label表正好在我的hbase中退出。
使用sqline时,我可以找到我的数据:
1 2 3 | sqline -u jdbc:drill:zk.... use hbase; input :select * from Label; |
我已经解决了这个问题。我混淆了钻的模式和jdbc驱动程序模式...
正确的代码应类似于:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | object SearchHbaseWithHbase{ def main(args: Array[String]): Unit = { Class.forName("org.apache.drill.jdbc.Driver") val zkIp ="192.168.3.2:2181" val p = new java.util.Properties p.setProperty("schema","hbase") // val connectionInfo = new ConnectionInfo val url = s"jdbc:drill:zk=${zkIp}" val connection = DriverManager.getConnection(url, p) // connection.setSchema("hbase") // println(connection.getSchema) val st = connection.createStatement() val rs = st.executeQuery("SELECT * FROM Label") while (rs.next()){ println(rs.getString(1)) } } } |