【问题标题】:Unable to connect to HIVE through JDBC from a webapp无法从 web 应用程序通过 JDBC 连接到 HIVE
【发布时间】:2016-09-21 22:24:06
【问题描述】:

我已经使用 JDBC api 连接到 HIVE2,引用 here,它是成功的,所以为了方便访问,我想围绕它创建一个 webapp,使用 JSP 作为前端页面来输入服务器名称和查询。虽然所有参数都从 JSP 页面正确解析到 servlet,但在连接到所需的 HIVE 服务器时会引发错误 将 libthrift 和 hive JARS 放在 WEB-INF/lib 目录中,我将它们放在 WEB-INF/lib 和类路径中。

问题在于 hive jar 首先出现在 WEB-INF/lib 中,并且由于它没有“org.apache.thrift.protocol.TProtocol.getScheme()”方法,所以我一直没有收到这样的方法错误。我提到了 herehere 并将 libthrift jar 移动到 WEB-INF/classes 但它有帮助:

Jar 版本:libthrift-0.9.3 和 hive-0.4.1

【问题讨论】:

  • 你对 Hive 版本是认真的吗?? V0.4.1于2009发布; Cloudera 发行版随 V1.2 一起发布(而且他们非常谨慎);并且 V2.0 可用。
  • @SamsonScharfrichter:嗨,我指的是 link 上下文中的 Hive2,我们的 hive 服务器版本是“hive-0.13”
  • Hive2 通常指的是“HiveServer2”,即第 2 代 JDBC 服务。与 Hive 版本无关。
  • 好的...但它之前工作正常...只是在尝试构建网络应用程序之后它失败了
  • 我猜 WEB-INF/lib 中的排序是问题,因为 hive-0.4.1 jar 没有“Tprotocol.getScheme()”方法

标签: java tomcat hadoop jdbc hive


【解决方案1】:

如果您的 Hive 版本更新,您可以...

但是很遗憾,您不能使用比您的服务器更新的驱动程序——这里是 V0.13,即没有“独立”驱动程序 JAR 的最后一个版本。 因此,您需要收集一大堆 Hive JAR,以及几个 Hadoop JAR 和各种依赖项,例如 libfb303-*.jarlibthrift-*.jar

$ unzip -l libthrift-0.9.2.jar | grep org.apache.thrift.protocol.TProtocol.class

2958 11-05-2014 03:47 org/apache/thrift/protocol/TProtocol.class

【讨论】:

  • 用这个独立的 jar 尝试了同样的问题,然后删除了所有 JARS,然后添加了“hive-exec-0.12.0.jar”、“hive-jdbc-0.12.0.jar”和“hive” -service-0.13.1.jar”并尝试运行现在出现此错误:“java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf$ConfVars”
  • 混合来自不同版本(这里是 V0.12 和 V0.13.1)的 JAR不是 一个好主意...我猜你的昵称是“daredevil”:-0
  • 无论如何,在我的回答中,我试图“温和地”告诉您,您的原始消息是关于一些缺少的 Thrift 库(来自 Facebook)。 “软”尝试明显失败,所以我会大声再试一次:Hive 使用 Thrift 协议,您必须将 Thrift 库libfb303-*.jarlibthrift-*.jar 放在 CLASSPATH 您的应用程序 -- 除非它们已经捆绑在“独立”驱动程序中; 但是对于 V0.13,您不能使用“独立”驱动程序
  • :D 有时我想有时会不起作用......谢谢......按照建议做了......现在可以工作了
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多