hive-通过Java API操作


通过Java API操作hive,算是测试hive第三种对外接口


测试hive 服务启动


 1 package org.admln.hive;
 2 
 3 import java.sql.SQLException;
 4 import java.sql.Connection;
 5 import java.sql.ResultSet;
 6 import java.sql.Statement;
 7 import java.sql.DriverManager;
 8 
 9 public class testHive {
10     
11     private static String driverName = 
12                    "org.apache.hadoop.hive.jdbc.HiveDriver";
13   
14     public static void main(String[] args) 
15                             throws SQLException {
16         try {
17             Class.forName(driverName);
18         } catch (ClassNotFoundException e) {
19             e.printStackTrace();
20             System.exit(1);
21         }
22 
23         Connection con = DriverManager.getConnection(
24                            "jdbc:hive://192.168.126.133:10000/default", "hive", "hadoop");
25         Statement stmt = con.createStatement();
26         String tableName = "hellohive";
27         stmt.execute("drop table if exists " + tableName);
28         stmt.execute("create table " + tableName + 
29                                      " (key int, value string)");
30         System.out.println("Create table success!");
31         // show tables
32         String sql = "show tables '" + tableName + "'";
33         System.out.println("Running: " + sql);
34         ResultSet res = stmt.executeQuery(sql);
35         if (res.next()) {
36             System.out.println(res.getString(1));
37         }
38 
39         // describe table
40         sql = "describe " + tableName;
41         System.out.println("Running: " + sql);
42         res = stmt.executeQuery(sql);
43         while (res.next()) {
44             System.out.println(res.getString(1) + "	" + res.getString(2));
45         }
46 
47 
48         sql = "select * from " + tableName;
49         res = stmt.executeQuery(sql);
50         while (res.next()) {
51             System.out.println(String.valueOf(res.getInt(1)) + "	"
52                                                + res.getString(2));
53         }
54 
55         sql = "select count(1) from " + tableName;
56         System.out.println("Running: " + sql);
57         res = stmt.executeQuery(sql);
58         while (res.next()) {
59             System.out.println(res.getString(1));
60         }
61     }
62 }

结果:


jdbc链接中后面两个参数不应该是用户名和密码,我傻乎乎的都天上,但是测试无论填什么或者不填都可以链接成功

为什么会这样,难道hive默认谁都可以链接?


用到的jar包

1 hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar
2 $HIVE_HOME/lib/hive-exec-0.11.0.jar 
3 $HIVE_HOME/lib/hive-jdbc-0.11.0.jar 
4 $HIVE_HOME/lib/hive-metastore-0.11.0.jar  
5 $HIVE_HOME/lib/hive-service-0.11.0.jar   
6 $HIVE_HOME/lib/libfb303-0.9.0.jar   
7 $HIVE_HOME/lib/commons-logging-1.0.4.jar  
8 $HIVE_HOME/lib/slf4j-api-1.6.1.jar

代码是摘抄的。

http://www.iteblog.com/archives/846


欲为大树,何与草争;心若不动,风又奈何。
原文地址:https://www.cnblogs.com/admln/p/hive-java-api-operate.html