首页 > 代码库 > hive里的JDBC编程入门

hive里的JDBC编程入门

 

 

HiveJDBC示例

        在使用 JDBC 开发 Hive 程序时, 必须首先开启 Hive 的远程服务接口。在hive安装目录下的bin,使用下面命令进行开启:

    hive -service hiveserver &  //Hive低版本提供的服务是:Hiveserver
    hive --service hiveserver2 &       //Hive0.11.0以上版本提供了的服务是:Hiveserver2

  我这里使用的Hive1.0版本,故我们使用Hiveserver2服务,下面我使用 Java 代码通过JDBC连接Hiveserver。

 技术分享

 

 

 

 

 

  18.1  测试数据

        本地目录/home/hadoop/下的djt.txt文件内容(每行数据之间用tab键隔开)如下所示:

  1        dajiangtai
  2        hadoop
  3        Hive
  4        hbase
  5        spark

    18.2  程序代码

  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  import java.sql.Statement;
  public class HiveJdbcTest1 {
           private static String driverName = "org.apache.Hive.jdbc.HiveDriver";//Hive驱动名称
           private static String url = "jdbc:Hive2://djt11:10000/default";//连接Hive2服务的连接地址,Hive0.11.0以上版本提供了一个全新的服务:HiveServer2
           private static String user = "hadoop";//对HDFS有操作权限的用户
           private static String password = "";//在非安全模式下,指定一个用户运行查询,忽略密码
           private static String sql = "";
           private static ResultSet res;
           public static void main(String[] args) {
               try {
                   Class.forName(driverName);//加载HiveServer2驱动程序
                   Connection conn = DriverManager.getConnection(url, user, password);//根据URL连接指定的数据库
                   Statement stmt = conn.createStatement();
                 
                   //创建的表名
                   String tableName = "testHiveDriverTable";
                 
                   /** 第一步:表存在就先删除 **/
                   sql = "drop table " + tableName;
                   stmt.execute(sql);
                 
                   /** 第二步:表不存在就创建 **/
                   sql = "create table " + tableName + " (key int, value string)  row format delimited fields terminated by ‘\t‘ STORED AS TEXTFILE";
                   stmt.execute(sql);
                 
                   // 执行“show tables”操作
                   sql = "show tables ‘" + tableName + "‘";
                   res = stmt.executeQuery(sql);
                   if (res.next()) {
                       System.out.println(res.getString(1));
                   }
                 
                   // 执行“describe table”操作
                   sql = "describe " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {  
                       System.out.println(res.getString(1) + "\t" + res.getString(2));
                   }
                 
                   // 执行“load data into table”操作
                   String filepath = "/home/hadoop/djt.txt";//Hive服务所在节点的本地文件路径
                   sql = "load data local inpath ‘" + filepath + "‘ into table " + tableName;
                   stmt.execute(sql);
                 
                   // 执行“select * query”操作
                   sql = "select * from " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {
                       System.out.println(res.getInt(1) + "\t" + res.getString(2));
                   }
                 
                   // 执行“regular Hive query”操作,此查询会转换为MapReduce程序来处理
                   sql = "select count(*) from " + tableName;
                   res = stmt.executeQuery(sql);
                   while (res.next()) {
                       System.out.println(res.getString(1));
                   }        
                   conn.close();
                   conn = null;
               } catch (ClassNotFoundException e) {
                   e.printStackTrace();
                   System.exit(1);
               } catch (SQLException e) {
                   e.printStackTrace();
                   System.exit(1);
               }
           }
  }

     18.3  运行结果(右击-->Run as-->Run on Hadoop)

          执行“show tables”运行结果:

        testHivedrivertable

       执行“describe table”运行结果:

      key    int
      value    string

        执行“select * query”运行结果:

      1        dajiangtai
      2        hadoop
      3        Hive
      4        hbase
      5        spark

       执行“regular Hive query”运行结果:

      5




技术分享

 

技术分享

 

技术分享

 


 技术分享

 

 

 

hive jdbc使用

 

Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)

hive里的JDBC编程入门