使用JDBC连接hiveserver2

1. 先在linux中启动hiveserver2

命令:hive --service hiverserver2

 

2. 使用Eclipse创建java项目,并在项目中导入以下jar包(可在hadoop/share/lib和hive/lib中找)

3. Hive的JDVC客户端操作步骤

 

4. Java代码

(1) JDBCUtils

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 帮助JDBC获取连接	
 * 以及释放资源
 * @author Dell
 *
 */
public class JDBCUtils {
	
	// 注意:此处不能使用"org.apache.hive.jdbc.HiveDriver.class",否则会报错。
	private static String driver = "org.apache.hive.jdbc.HiveDriver";
	
	// hive默认的端口是10000,default是要连接的hive的数据库的名称
	private static String url = "jdbc:hive2://192.168.137.189:10000/default";
	
	// 注册驱动
	static {
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
	}
	
	// 获取连接
	public static Connection getConnection() {
		try {
			return DriverManager.getConnection(url);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	// 释放资源
	public static void realese(Connection conn, Statement st, ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				rs = null;    // 将某个对象设置为null,那么这个对象会迅速成为垃圾回收的对象
			}
		}
		
		if (st != null) {
			try {
				st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				st = null;    // 将某个对象设置为null,那么这个对象会迅速成为垃圾回收的对象
			}
		}
		
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				conn = null;    // 将某个对象设置为null,那么这个对象会迅速成为垃圾回收的对象
			}
		}
	}

}

(2) HiveJDBCDemo

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import demo.utils.JDBCUtils;

public class HiveJDBCDemo {

	public static void main(String[] args) {
		
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		
		String sql = "select * from employee";
		
		try {
			// 获取连接
			conn = JDBCUtils.getConnection();
			// 创建运行环境
			st = conn.createStatement();
			// 运行HQL
			rs = st.executeQuery(sql);
			
			// 处理数据
			while(rs.next()) {
				// 取出员工的姓名和薪水
				String name = rs.getString(2);
				int sal = rs.getInt(6);
				System.out.println(name + "\t" + sal);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils.realese(conn, st, rs);
		}		
	}
}

5. 将此Java项目打包为jar包,传到linux系统上执行。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值