简体   繁体   English

Hive-Java JDBC连接问题

[英]Hive-Java JDBC connection problems

I am doing a program in Java and I need to connect with a database in hive. 我正在用Java编写程序,并且需要与Hive中的数据库连接。 I am using mysql as metastore. 我正在使用mysql作为metastore。 Hadoop, mysql and hive work without problem. Hadoop,mysql和hive正常工作。 I have created my database warehousedb and the table person inside it and also I inserted datas for the hirve console. 我已经创建了数据库Warehousedb和其中的表人,还为hirve控制台插入了数据。 The problem is when I intent to do the connection via JDBC with this database through my Java program. 问题是当我打算通过Java程序通过JDBC与该数据库建立连接时。 I was looked for internet and I have also put all the libraries that I have indicated. 我一直在寻找互联网,我也把我指示的所有图书馆都放了。

When I execute those lines appear an exeption: 当我执行这些行时,会出现一个例外:

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)

If I try with the hiveserver2: 如果我尝试使用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

How can I do the connection? 我该如何连接?

At first Make Sure which jar (hive ) do you want .. because it has diferent versions The old verison jar is 首先,确定您要哪个罐子(配置单元)..,因为它有不同的版本。

org.apache.hadoop.hive.jdbc.HiveDriver

and the newest jar is org.apache.hive.jdbc.HiveDriver 而最新的jar是org.apache.hive.jdbc.HiveDriver
The hiveserver2 port is 1000 hiveserver2端口为1000

for example 例如

 Class.forName(org.apache.hive.jdbc.HiveDriver);
    Connection conn = DriverManager.getConnection(jdbc:hive2://192.168.1.1:10000/default);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM