java连接hive(jdbc)

进行以下操作时确保已经启动,mysql,hive服务器,hiveserver2

    • 前提
    • 创建java项目
    • 导入本地驱动包
    • jdbc的代码
    • hive客户端操作
    • Beeline客户端操作

前提

#node4
nohup bin/hive --service metastore &
nohup bin/hiveserver2 &

创建java项目

java连接hive(jdbc)_第1张图片

导入本地驱动包

驱动包在

F:\qq\qq文件\学习软件\hive-3.1.2-bin\apache-hive-3.1.2-bin\jdbc

第一步
Window–Preferences(预设)–Java–Build Path–User Libraries
点New,输入hive,点ok,点击右边Add External JARs…按钮
找到本地驱动包路径选中
最后点击下边Apply And Close(保存并关闭)
第二步
右击项目,点击最下面的Properties(属性)点击Java Build Path
选中Libraties
java连接hive(jdbc)_第2张图片
java连接hive(jdbc)_第3张图片
java连接hive(jdbc)_第4张图片
java连接hive(jdbc)_第5张图片
java连接hive(jdbc)_第6张图片

jdbc的代码

package com.jinghangzz.hive.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

/**
 * 需求:使用java代码查询hive表中朝代表的所有数据
 * 		~jdbc:的架子;四步走
 * 		
 * @author wangshMac
 *
 */
public class HiveDemo
{
     
	public static void main(String[] args)
	{
     
		System.out.println("====");
		
		String driver = "org.apache.hive.jdbc.HiveDriver" ; 
		String url = "jdbc:hive2://node4:10000/mydata";
		String user = "root";
		String password = "123456";
		
		String sql = "select * from a_dynasty" ; 
		
		Connection connection = null ; 
		PreparedStatement ps = null ; 
		ResultSet rs = null ;
		try
		{
     
			/* 加载驱动 */
			Class.forName(driver) ;
			/* 获取链接 */
			connection = DriverManager.getConnection(url, user, password);
			System.out.println("====" + connection);
			/* 操作数据库 */
			ps = connection.prepareStatement(sql);
			/* 设置点位符 */
			rs = ps.executeQuery() ; 
			/*
			 * 查询的结果一条,就用if
			 * 查询的结果多条,就用while
			 * */
			while(rs.next())
			{
     
				/* 取值 */
				int id = rs.getInt("id");
				String name = rs.getString("name");
				Date createTime = rs.getTimestamp("createTime");
				System.out.println(id + "\t" + name + "\t" + createTime);
			}
		} catch (ClassNotFoundException e)
		{
     
			e.printStackTrace();
		} catch (SQLException e)
		{
     
			e.printStackTrace();
		} finally
		{
     
			try
			{
     
				if(rs != null)
				{
     
					rs.close();  
					rs = null ; 
				}
			} catch (SQLException e)
			{
     
				e.printStackTrace();
			}
			try
			{
     
				if(ps != null)
				{
     
					ps.close();  
					ps = null ; 
				}
			} catch (SQLException e)
			{
     
				e.printStackTrace();
			}
			
			/* 关闭链接 */
			try
			{
     
				if(connection != null)
				{
     
					connection.close();  
					connection = null ; 
				}
			} catch (SQLException e)
			{
     
				e.printStackTrace();
			}
		}
	}
}

hive客户端操作

在hive外部执行命令
直接执行单引号’'内的sql语句()

bin/hive -e 'sql语句(不用带;)'		

可以把sql语句放进这个文件中,这个命令会执行这个文件中所有的sql语句(文件里的语句加;)

bin/hive -f 'sql文件绝对路径'

想要在在进入hive后使用linux命令在命令前加上!

例如:  hive>  !ls
>  	覆盖
>>	追加

Beeline客户端操作

~代表家目录

~/666.txt

在链接的时候直接就链接上数据库

bin/beeline -u jdbc:hive2://node4:10000/mydata -n root -p 123456

连接上beeline,直接执行sql语句

bin/beeline -u jdbc:hive2://node-4:10000/mydata -n root -p 123456 -e 'select id ,name ,createtime from mydata.a_dynasty'

默认的输出格式有变化

bin/beeline --outputformat=csv -u jdbc:hive2://node-4:10000/mydata -n root -p 123456  -e 'select id ,name ,createtime from mydata.a_dynasty' 

你可能感兴趣的:(java连接hive(jdbc))