henda 发表于 2017-12-18 11:13:48

Hadoop Hive概念学习系列之hive里的JDBC编程入门(二十二)

  Hive与JDBC示例
  在使用 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>  

         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 {  

                  >  

                   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)
页: [1]
查看完整版本: Hadoop Hive概念学习系列之hive里的JDBC编程入门(二十二)