java api操作hive遇到的問題
阿新 • • 發佈:2019-01-29
package hadoop_study;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class HiveCreateDb {
private static String diverName="org.apache.hive.jdbc.HiveDriver";
private static String url="jdbc:hive2://localhost:10000/default" ;
public static void main(String[] args){
try {
Class.forName(diverName);
Connection con=DriverManager.getConnection(url,"","");
Statement stmt=con.createStatement();
stmt.execute("CREATE DATABASE userdb2");
System.out.println("create database successful" );
} catch (ClassNotFoundException |SQLException e ) {
e.printStackTrace();
}
}
}
1: Java.lang.ClassNotFoundException: org.apache.Hadoop.hive.jdbc.HiveDriver
修改前
private static String diverName="org.apache.hadoop.hive.jdbc.HiveDriver";
修改後
private static String diverName="org.apache.hive.jdbc.HiveDriver" ;
2: java.sql.SQLException: No suitable driver found for jdbc:hive://localhost:10000/default
在 hive 1.2.1 需要 jdbc:hive2://localhost:10000/default 而不是 jdbc:hive://localhost:10000/default
3: java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://X.X.X.X:10000/default: java.NET.ConnectException: Connection refused
直接用shell語句:hiveserver2 & 在後臺啟動動hive server
4:User: sl is not allowed to impersonate anonymous
解決方法:
修改hadoop 配置檔案 etc/hadoop/core-site.xml,加入如下配置項
<property>
<name>hadoop.proxyuser.sl.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.sl.groups</name>
<value>*</value>
</property>
這個sl是你的使用者名稱,然後重啟hadoop
最後執行結果