这里有一个问题
connect from java to Hive但我的不同
我的hive在machine1上运行,我需要使用在machine2上运行的Java服务器传递一些查询.据我所知,Hive有一个JDBC接口,用于接收远程查询.我从这里拿了代码 – HiveServer2 Clients
我安装了文章中写的依赖项: –
> hive-jdbc * .jar
> hive-service * .jar
> libfb303-0.9.0.jar
> libthrift-0.9.0.jar
> log4j-1.2.16.jar
> slf4j-api-1.6.1.jar
> slf4j-log4j12-1.6.1.jar
> 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.(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-Hive Error中添加Hadoop API依赖项
我不明白为什么我需要hadoop API让客户端与Hive连接. JDBC驱动程序不应该与底层查询系统无关吗?我只需要传递一些SQL查询?
编辑:
我正在使用Cloudera(5.3.1),我想我需要添加CDH依赖项. Cloudera实例正在运行hadoop 2.5.0和HiveServer2
但是服务器在机器1上.在机器上,代码至少应该编译,我应该只在运行时遇到问题!