1. 程式人生 > >java api操作hive遇到的問題

java api操作hive遇到的問題

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

最後執行結果
這裡寫圖片描述

這裡寫圖片描述