2014-10-07 3 views
4

У меня есть кластер Hortonwork (Linux) и вы хотите использовать JDBC для загрузки данных в Hive с удаленного хоста. Я пытаюсь заставить соединение JDBC работать локально в кластере, чтобы я знал, что сделал это правильно, прежде чем пытаться удаленно.Jdbc Hive2 Invalid Url Exception

улей был успешно установлен, и я могу подключиться через Билайна без каких-либо проблем:

/usr/lib/hive/bin/beeline 
Beeline version 0.13.0.2.1.4.0-632 by Apache Hive 
beeline> !connect jdbc:hive2://localhost:10000 
scan complete in 3ms 
Connecting to jdbc:hive2://localhost:10000 
Enter username for jdbc:hive2://localhost:10000: someuser 
Enter password for jdbc:hive2://localhost:10000: ****** 
Connected to: Apache Hive (version 0.13.0.2.1.4.0-632) 
Driver: Hive JDBC (version 0.13.0.2.1.4.0-632) 
Transaction isolation: TRANSACTION_REPEATABLE_READ 

Мой класс Java выглядит как:

public class HiveConn { 
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver"; 
public static void main(String[] args) throws SQLException { 
HiveConn myJob = new HiveConn(); 
myJob.execute(); 
} 
public void execute() throws SQLException { 
//mLogger.info("Start HiveJob"); 
System.out.println("Start HiveJob"); 
try { 
Class.forName(driverName); 
} catch (ClassNotFoundException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
System.exit(1); 
} 
Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000", "", ""); 
//Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000", "root", ""); 
//Statement stmt = con.createStatement(); 
String sql = "SHOW TABLES"; 
System.out.println("Running: " + sql); 
System.out.println("HiveJob executed!"); 
} 
} 

за исключением:

Start HiveJob 
    Exception in thread "main" java.sql.SQLException: Invalid URL: jdbc:hive2://localhost:10000/default 
     at org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:86) 
     at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:106) 
     at java.sql.DriverManager.getConnection(DriverManager.java:571) 
     at java.sql.DriverManager.getConnection(DriverManager.java:215) 
     at HiveConn.execute(HiveConn.java:29) 
     at HiveConn.main(HiveConn.java:17) 

I я зарегистрирован как root, поэтому не должно быть проблем с разрешением. Я попробовал все возможные Url комбо, включая полное имя хоста как

jdbc:hive2://servername.company.com:10000 

and also adding "default" and user-name in every possible combo to the URL like: 

jdbc:hive2://localhost:10000/default "user" 

I have tried to add authentication NOSASL to the hive-site.xml and adding it to the URL like: 

jdbc:hive2://servername.company.com:10000;auth=NoSasl 

Мой IP-таблица конфигурации выглядит следующим образом:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1   localhost localhost.localdomain localhost6 localhost6.localdomain6 
ip.address servername.company.com 
ip.address servername.company.com 
ip.address servername.company.com 
ip.address servername.company.com 

Я не знаю, что попробовать больше. Это, наверное, что-то глупое, которого я пропускаю.

ответ

3

Умножено. я использовал неправильный DriverName и правильным должно быть:

private static String driverName = "org.apache.hive.jdbc.HiveDriver"; 

Как подозреваемой глупая ошибка ...

Смежные вопросы