zoukankan      html  css  js  c++  java
  • Hadoop Hive概念学习系列之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 '	' 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) + "	" + 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) + "	" + 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项目开发环境搭建(EclipseMyEclipse + Maven)

  • 相关阅读:
    c++实验9 图及图的操作实验
    Html/CSS 示例演练 图书馆后台界面
    c++实验8 哈夫曼编码-译码器
    Html/CSS 初步介绍html和css部分重要标签
    c++实验7 二叉树
    JavaWeb -学生信息管理实践(JDBC+web+三层架构+DBUtil构造思路)
    java 实验6 图形用户界面设计试验(2)
    操作表与操作表数据行
    数据表操作练习
    数据库的介绍:
  • 原文地址:https://www.cnblogs.com/zlslch/p/6131139.html
Copyright © 2011-2022 走看看