【问题标题】:How to connect Hbase With JDBC driver of Apache Drill programmatically如何以编程方式将 Hbase 与 Apache Drill 的 JDBC 驱动程序连接起来
【发布时间】:2017-01-18 16:49:39
【问题描述】:

我尝试以编程方式使用 Apache Drill 的 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,Like:

connection.setSchema("hbase")

但它失败并显示错误代码:


线程“主”java.sql.SQLException 中的异常:验证错误: 从第 1 行第 15 列到第 1 行第 19 列:未找到表“标签” SQL 查询为空


标签表在我的 hbase 中完全退出。 当我使用 sqline 时,我可以找到我的数据:

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

【问题讨论】:

    标签: jdbc hbase apache-drill


    【解决方案1】:

    我已经解决了这个问题。我混淆了钻的架构和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))
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2019-11-09
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      相关资源
      最近更新 更多