免费注册
帮助文档(华北一、二)

  • 1. 使用JAVA连接HiveServer2(实现创建表格、加载数据,展示数据操作)

    此示例需要您先登陆托管Hadoop集群master1节点,以下操作默认在master1节点执行

    org.apache.hive.jdbc.HiveDriver是hiveserver2的dirvername,hiveserver2的访问地址是"jdbc:hive2://ip:10000/default"。

    ● 编写示例代码

    示例代码Hive2JdbcClient.java如下:

     
    import java.sql.SQLException; 
    import java.sql.Connection; 
    import java.sql.ResultSet; 
    import java.sql.Statement; 
    import java.sql.DriverManager;   
    public class Hive2JdbcClient {     
      private static String driverName = "org.apache.hive.jdbc.HiveDriver";   
      /**      
      * @param args      
      * @throws SQLException      
      */     
      public static void main(String[] args) throws SQLException {         
        try {             
          Class.forName(driverName);         
        } catch (ClassNotFoundException e) {             
          // TODO Auto-generated catch block             
          e.printStackTrace();             
          System.exit(1);         
        }         
        //replace "hive" here with the name of the user the queries should run as         
        Connection con = DriverManager.getConnection("jdbc:hive2://uhadoop-******-
    master2:10000/default", "", "");         
        Statement stmt = con.createStatement();         
        String tableName = "testHive2DriverTable";         
        stmt.execute("drop table if exists " + tableName);   
        stmt.execute("create table " + tableName + " (key int, value string)");         
        // show tables         
        String sql = "show tables '" + tableName + "'";         
        System.out.println("Running: " + sql);         
        ResultSet res = stmt.executeQuery(sql);         
        if (res.next()) {             
          System.out.println(res.getString(1));         
        }         
        // describe table         
        sql = "describe " + tableName;         
        System.out.println("Running: " + sql);         
        res = stmt.executeQuery(sql);         
        while (res.next()) {             
          System.out.println(res.getString(1) + "\t" + res.getString(2));         
        }           
        // load data into table         
        // NOTE: filepath has to be local to the hive server         
        // NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per line         
        String filepath = "/user/hive/warehouse/b.txt";         
        sql = "load data inpath '" + filepath + "' into table " + tableName;         
        System.out.println("Running: " + sql);         
        stmt.execute(sql);           
        // select * query         
        sql = "select * from " + tableName;         
        System.out.println("Running: " + sql);         
        res = stmt.executeQuery(sql);         
        while (res.next()) {                 
          System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));         
        }           
        // regular hive query         
        sql = "select count(1) from " + tableName;         
        System.out.println("Running: " + sql);         
        res = stmt.executeQuery(sql);         
        while (res.next()) {             
          System.out.println(res.getString(1));         
        }     
      } 
    }

    注解:

    Connection con = DriverManager.getConnection("jdbc:hive2://uhadoop-******-master2:10000/default", "",