【发布时间】:2018-06-13 15:13:40
【问题描述】:
我正在用 Java 编写一个程序,我需要连接 hive 中的数据库。我正在使用 mysql 作为元存储。 Hadoop、mysql 和 hive 工作没有问题。我已经创建了我的数据库仓库数据库和其中的人员表,并且我还为 hirve 控制台插入了数据。问题是当我打算通过我的 Java 程序通过 JDBC 与该数据库进行连接时。我被寻找互联网,我也把我指出的所有图书馆。
当我执行这些行时出现一个异常:
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
Connection co = DriverManager.getConnection("jdbc:hive://localhost:9000/warehousedb", "", "");
java.sql.SQLException: org.apache.thrift.transport.TTransportException
at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:191)
at org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:127)
at org.apache.hadoop.hive.jdbc.HiveConnection.configureConnection(HiveConnection.java:126)
at org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:121)
at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:104)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at connection.Conection.getHiveConnection(Conection.java:38)
at logic.Exc.main(Exc.java:19)
如果我尝试使用 hiveserver2:
Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
Connection co = DriverManager.getConnection("jdbc:hive2://localhost:9000/warehousedb", "hive", "hive");
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration
at org.apache.hive.jdbc.HiveConnection.createUnderlyingTransport(HiveConnection.java:432)
at org.apache.hive.jdbc.HiveConnection.createBinaryTransport(HiveConnection.java:452)
at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:193)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:157)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:107)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at connection.Conection.getHiveConnection(Conection.java:38)
at logic.Exc.main(Exc.java:19)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 9 more
如何进行连接?
【问题讨论】:
-
请发布完整的异常堆栈跟踪,而不仅仅是异常消息。
-
NoClassDefFoundError> 这很明确!您选择了哪种 JDBC 驱动程序——Apache 或 Cloudera?如果是 Apache,您是否采用了“独立”JAR? -
stackoverflow.com/questions/50688347/… 由同一用户复制——老兄,我想你连上网都很难,但那东西很复杂,你需要一些现实生活中的指导(在Java 和 Hadoop 上的两者)
-
你的蜂巢版本是什么?
-
我的hive版本是2.3.3