gpt4 book ai didi

hadoop - 通过 Java JDBC 连接 Hive

转载 作者:可可西里 更新时间:2023-11-01 14:13:15 31 4
gpt4 key购买 nike

这里有个问题connect from java to Hive但我的不同

我的配置单元在机器 1 上运行,我需要使用在机器 2 上运行的 Java 服务器传递一些查询。据我了解,Hive 有一个用于接收远程查询的 JDBC 接口(interface)。我从这里获取代码 - HiveServer2 Clients

我安装了文中写的依赖:

  1. hive jdbc*.jar
  2. hive 服务*.jar
  3. libfb303-0.9.0.jar
  4. libthrift-0.9.0.jar
  5. log4j-1.2.16.jar
  6. slf4j-api-1.6.1.jar
  7. slf4j-log4j12-1.6.1.jar
  8. commons-logging-1.0.4.jar

但是我在编译时遇到了 java.lang.NoClassDefFoundError 错误完整错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
at org.apache.hive.jdbc.HiveConnection.createBinaryTransport(HiveConnection.java:393)
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:187)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:163)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.bidstalk.tools.RawLogsQuerySystem.HiveJdbcClient.main(HiveJdbcClient.java:25)

StackOverflow 上的另一个问题建议在 Maven 中添加 Hadoop API 依赖项 - Hive Error

我不明白为什么客户端需要 hadoop API 才能与 Hive 连接。 JDBC 驱动程序不应该不知道底层查询系统吗?我只需要传递一些 SQL 查询?

编辑:我正在使用 Cloudera(5.3.1),我想我需要添加 CDH 依赖项。 Cloudera 实例正在运行 hadoop 2.5.0 和 HiveServer2

但是服务器在机器 1 上。在机器上,代码至少应该可以编译,我应该只在运行时有问题!

最佳答案

如果您还没有解决这个问题,我已经试一试了。我需要以下依赖项才能编译和运行它:

libthrift-0.9.0-cdh5-2.jar
httpclient-4.2.5.jar
httpcore-4.2.5.jar
commons-logging-1.1.3.jar
hive-common.jar
slf4j-api-1.7.5.jar
hive-metastore.jar
hive-service.jar
hadoop-common.jar
hive-jdbc.jar
guava-11.0.2.jar

hive 文档可能是针对旧版本/发行版编写的。

您的异常是由于缺少 hadoop-common jar,它具有 org.apache.hadoop.conf.Configuration

希望这对您有所帮助。

关于hadoop - 通过 Java JDBC 连接 Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760141/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com