如何用apachedrill的jdbc驱动程序编程连接hbase

vdzxcuhz  于 2021-06-10  发布在  Hbase
关注(0)|答案(1)|浏览(428)

我尝试以编程方式使用apachedrill的jdbc驱动程序。
代码如下:

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,如:

connection.setSchema("hbase")

但它失败了,错误代码是:
线程“main”java.sql.sqlexception中出现异常:验证错误:从第1行第15列到第1行第19列:表“label”未找到sql查询null
label表在我的hbase中正好存在。我可以在使用sqline时找到我的数据,例如:

sqline -u jdbc:drill:zk.... 
use hbase;
input :select * from Label;
pxq42qpu

pxq42qpu1#

我已经解决了这个问题。我混淆了演练的模式和jdbc驱动程序模式。。。。。。正确的代码应如下所示:

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))
    }
  }
}

相关问题