創建項目,添加jar包,hive的s上,所以也需要hadoop的一些jar

創建測試類,寫測試代碼
//獲取jdbc鏈接 private static Connection getConnection(){ Connection conn=null; try { //注冊驅動 Class.forName("org.apache.hive.jdbc.HiveDriver"); conn=DriverManager.getConnection("jdbc:hive2://node4:10000/default"); // jdbc:hive://localhost:10000/default } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; }
conn=getConnection();//獲取鏈接 sbSql.append("select * from "); if(null!=conn){ try { statement=conn.createStatement(); String tableName="student_1"; sbSql.append(tableName); //執行sql rSet=statement.executeQuery(sbSql.toString()); if(null!=rSet){ while(rSet.next()){ System.out.println(rSet.getString(3)); } }
遇到的問題
1.
在使用eclipse鏈接hive時,總是報:不能夠打開一個連接,time out connection,這個是因為我服務器的防火牆沒關閉
2.報一下錯誤,需要配置hadoop-core.xml文件
Caused by: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): Unauthorized connection for super-user: root from IP 192.168.177.124
添加如下配置
<property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property>
3:
No suitable driver found for jdbc:hive://node4:10000/default
這個異常是因為連接的uri導致的:
在1.2以上的版本使用
//注冊驅動 Class.forName("org.apache.hive.jdbc.HiveDriver"); conn=DriverManager.getConnection("jdbc:hive2://node4:10000/default");
在1.2以下的版本使用
//注冊驅動 Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver"); conn=DriverManager.getConnection("jdbc:hive://node4:10000/default");
4:有點需要注意的是這個鏈接的是hive,並不是mysql,所以在鏈接的uri里鏈接的是
default庫
5:這個異常是因為,在不安全的模式中啟動hive, hive.metastore.execute.setugi這個屬性設置為true將導致metastore執行DFS操作使用據客戶的用戶和組權限
java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.security.AccessControlException Permission denied: user=anonymous, access=WRITE, inode="/opt/hive/warehouse":root:supergroup:drwxr-xr-x
所以
一種 是修改hive-site.xml配置文件
<property> <name>hive.metastore.execute.setugi</name> <value>false</value> <description> 在不安全的模式中,將這個屬性設置為true將導致metastore執行DFS操作使用 據客戶的用戶和組權限。請注意,這個屬性必須設置 客戶端和服務器端。進一步指出,最好的努力。 如果客戶端將其設置為真,服務器將它設置為false,客戶端設置將被忽略。 </description>
二 是,使用安全模式啟動hive
6:在創建表的時候,如果有定義分區,要先定義分區,否則就會拋出異常
FAILED: ParseException line 1:164 cannot recognize input near 'partitioned' '(' 'sexual' in serde properties specification