博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HIVEjdbc搭建
阅读量:6158 次
发布时间:2019-06-21

本文共 3731 字,大约阅读时间需要 12 分钟。

hot3.png

1. 开启hive的远程连接

// 即使关闭当前会话但进程不会结束nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10010 &

2. 导入jar包

链接: 密码:u6fd 添加到java项目中

3. 代码详解

  • code
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;public class HiveUtil {		private Statement statement = null;		// HiveUtil实例化时会自动打开连接并导入自定义方法udf	public HiveUtil() {		open();		Init();	}		// 初始化udf自定义方法包(当连接断开时,方法会自动失效),若有新的方法可在后面新增执行语句	private void Init() {		try {			statement.execute("add jar /home/bigdata/udf.jar");			statement.execute("create temporary function sub as 'com.yulang.udf.SubString'");			statement.execute("create temporary function jsonParse as 'com.yulang.udf.JsonParse'");		} catch (SQLException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}			}	static {		try {			// 1.加载驱动			Class.forName("org.apache.hive.jdbc.HiveDriver");		} catch (ClassNotFoundException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}	private void open() {		try {			// 2.打开连接			Connection connection = DriverManager.getConnection("jdbc:hive2://HADOOP01:10010/");			// 3.获得操作对象 - 会话			statement = connection.createStatement();		} catch (Exception e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}		/**	 * 创建数据库 - 用户注册时调用	 * @param databaseName 根据用户标识生成的数据库名称	 */	public void createDatabase(String databaseName) {		try {			statement.execute("create database " + databaseName);		} catch (SQLException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}		/**	 * 切换数据库 - 只对当前会话有效	 * @param databaseName 目标数据库名称	 */	public void changeDatabase(String databaseName) {		try {			statement.execute("use " + databaseName);		} catch (SQLException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}		/**	 * 获得当前数据库中的数据列表 - 注意切换数据库	 * @return 数据表名称的集合	 */	public List
getTaleList() { List
list = new ArrayList<>(); try { ResultSet rs = statement.executeQuery("show tables"); while (rs.next()) { list.add(rs.getString(1)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } /** * 获得数据表的简要信息 * @param tableName 数据表名称 * @return 列名及列的数据类型 */ public List
getTableInfo(String tableName){ List
list = new ArrayList<>(); try { ResultSet rs = statement.executeQuery("desc " + tableName); while (rs.next()) { list.add(rs.getString(1) + "\t" + rs.getString(2)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } /** * 获取数据表前十条的预览数据 * @param tableName 数据表名称 * @return 数据表预览数据 */ public List
getTableData(String tableName){ List
list = new ArrayList<>(); try { int size = getTableInfo(tableName).size(); ResultSet rs = statement.executeQuery("select * from " + tableName +" limit 10"); while (rs.next()) { String line = ""; for(int i = 1;i <= size;i ++) { line += rs.getString(i) + "\t"; } list.add(line); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } /** * 获得查询sql执行后的返回结果 * @param sql 用户自定义sql * @return sql执行结果集中的所有数据 */ public List
getResultData(String sql) { List
list = new ArrayList<>(); try { String tableName = "tmp_table"; sql = "create table " + tableName + " as " + sql; // 执行建表语句 statement.execute(sql); // 通过查询方法获取到新建表的数据 list = getTableData("tmp_table"); // 使用完临时表后drop临时表 statement.execute("drop table "+ tableName); } catch (SQLException e) { e.printStackTrace(); list = null; } return list; }}

转载于:https://my.oschina.net/yulang/blog/2050387

你可能感兴趣的文章
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
bulk
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
深入python的set和dict
查看>>
Android JSON数据解析
查看>>