jdbc通过hive server2访问hive

Posted forrestxingyunfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdbc通过hive server2访问hive相关的知识,希望对你有一定的参考价值。

1,pom配置:


<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.6.0-cdh5.8.3</version>
</dependency>
<dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.6.0-cdh5.8.3</version>
</dependency>
<dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-jdbc</artifactId>
        <version>1.1.0-cdh5.8.3</version>
</dependency>
 


2,java代码:


package com.ibeifeng.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MyJdbc
 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://192.168.1.109:10000/default", "", "");
   Statement stmt = con.createStatement();
   String tableName = "test";
   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 = "/tmp/a.txt";
//    sql = "load data local 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));
//    
 




以上是关于jdbc通过hive server2访问hive的主要内容,如果未能解决你的问题,请参考以下文章

Hive的JDBC连接

Hive数据仓库--Java代码JDBC方式访问Hive中表的数据

如何查看当前hive运行的应用

Java采用JDBC的方式连接Hive(SparkSQL)

hive工程实践

Hive入门