使用java(eclipse)远程连接hive进行数据库操作(hiveserver2)


hive 版本apache-hive-1.2.1-bin

1.先启动mysql (sevice mysql start)

2.启动hive远程服务,输入:./hive --service hiveserver2 或者hiveserver2

  如图服务已经启动成功;
3.引入jar包到项目中

  jar包 包括:  apache-hive-1.2.1-bin 里面的lib下的jar包,还有hadoop-2.7.1--》share--》hadoop--》common下的hadoop-common-2.7.1.jar

4.在项目中写入以下代码即可
   Class.forName("org.apache.hive.jdbc.HiveDriver");
   Connection connection = DriverManager.getConnection("jdbc:hive2://192.168.18.130:10000/", "root","root");

                           URL(该版本端口10000/后可以不加default)      用户名 密码
 (端口10000是默认的,也可以在启动hive远程服务的时候通过-p设置)   

例:

 

package com.java.hadoop.hive;

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

import org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Processor.drop_database;
import org.junit.Before;
import org.junit.Test;

public class TestHive {
	private Connection connection;
	private PreparedStatement ps;
	private ResultSet rs;
	//创建连接
	@Before
	public void getConnection() {
		try {

			Class.forName("org.apache.hive.jdbc.HiveDriver");
			connection = DriverManager.getConnection("jdbc:hive2://192.168.18.130:10000/", "root", "root");
			System.out.println(connection);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	//关闭连接
	public void close() {
		try {
			if (rs != null) {
				rs.close();
			}
			if (ps != null) {
				ps.close();
			}
			if (connection != null) {
				connection.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	// 创建表
	@Test
	public void createTable() {
		String sql = "create table goods2(id int,name string) row format delimited fields terminated by '\t' ";
		try {
			ps = connection.prepareStatement(sql);
			ps.execute(sql);
			close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	// 删除表
	@Test
	public void dropTable() {
		String sql = "drop table goods";
		try {
			ps = connection.prepareStatement(sql);
			ps.execute();
			close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	//添加数据
	@Test
	public void insert() throws SQLException{
		String sql = "load data inpath '/goods.txt' into table goods";
		//记得先在文件系统中上传goods.txt
		ps = connection.prepareStatement(sql);
		ps.execute();
		close();
	}
	//查询
	@Test
	public void find() throws SQLException {
		String sql = "select * from goods ";
		ps = connection.prepareStatement(sql);
		rs = ps.executeQuery();
		while (rs.next()) {
			System.out.println(rs.getObject(1) + "---" + rs.getObject(2));
		}
		close();
	}

	
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM