Hive的基本操作有哪些
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,小编给大家分享一下Hive的基本操作有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:首先,配置好连接Hive的Pr
千家信息网最后更新 2025年12月03日Hive的基本操作有哪些
小编给大家分享一下Hive的基本操作有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一:首先,配置好连接Hive的Properties,创建hivedb.properties 如下:
driver=org.apache.hive.jdbc.HiveDriverurl=jdbc:hive2://master:10000/defaultuser=hivepassword=xujun
二:创建HiveProperties,继承自Properties,读取hivedb.properties(单例)
public class HiveProperties extends Properties { /** * @author Berg * 读取hivedb.properties */ private static final long serialVersionUID = 1L; private static HiveProperties hiveProperties; private HiveProperties(){ InputStream iis = HiveProperties.class.getClassLoader().getResourceAsStream("hivedb.properties"); try{ super.load( iis ); }catch(IOException e ){ e.printStackTrace(); } } public static HiveProperties getInstance(){ if( hiveProperties == null){ hiveProperties = new HiveProperties(); } return hiveProperties; }}三:创建HiveUtil,对Hive中的基本操作进行简单封装:
注意:导入数据的时候,可以从本地文件导入数据,也可以从HDFS上导入数据,
区别是:如果导入的是HDFS数据,则不需要local关键字
public class HiveUtil { //读取一次驱动 静态块 static{ try { Class.forName(HiveProperties.getInstance().getProperty("driver")); }catch(ClassNotFoundException e){ e.printStackTrace(); //输出至标准错误流。 } } //获取HiveConnection public Connection getConn() throws SQLException{ HiveProperties hp = HiveProperties.getInstance(); Connection conn = DriverManager.getConnection(hp.getProperty("url"), hp.getProperty("user"), hp.getProperty("password") ); return conn; } //创建表: public boolean createTable(Statement statement,String sql) throws SQLException{ /** * 如果第一个结果为 ResultSet 对象,则返回 true * 如果其为更新计数或者不存在任何结果,则返回 false * 因为 create 语法不属于DML, 所以执行create sql语句后将返回false。 * 看起来还是有点缺陷。 */ boolean result = statement.execute(sql); if( !result ){ return true; }else{ return false; } } //判断表是否存在 public boolean tableIsExists(Statement statement, String tableName) throws SQLException{ String sql = "show tables '" + tableName + "'"; ResultSet rs = statement.executeQuery(sql); if (rs.next()) { return true; }else{ return false; } } //删除某张表: public boolean dropTable(Statement statement,String tableName) throws SQLException { String sql = "drop table " + tableName; boolean result = statement.execute(sql); if( !result ){ return true; }else{ return false; } } //显示某张表或显示所有的表 public ResultSet showTables(Statement statement, String tableName) throws SQLException{ String sql = ""; if(tableName==null||tableName.equals(null)){ sql = "show tables"; }else{ sql = "show tables '" + tableName + "'"; } ResultSet rs = statement.executeQuery(sql); return rs; } //对表的描述: public ResultSet describeTable(Statement statement, String tableName) throws SQLException { String sql = "describe " + tableName; ResultSet rs = statement.executeQuery(sql); return rs; } /** *通过文件方式,将文件中数据插入到表中:加载本地本剑数据。 * @throws SQLException * @filePath: 文件路径, 比如: /home/hadoop/mytestdata/hive.txt * 注意此路径在虚拟机下。。。 * */ //通过文件方式,将文件中数据插入到表中:加载本地本剑数据。 public boolean loadDataFromLocal(Statement statement, String tableName,String filePath) throws SQLException { String sql = "load data local inpath '" + filePath + "' into table " + tableName; boolean result = statement.execute(sql); if( !result ){ return true; }else{ return false; } } //通过文件方式,将文件中数据插入到表中:加载本地本剑数据。 public boolean loadDataFromHDFS(Statement statement, String tableName,String filePath) throws SQLException { String sql = "load data inpath '" + filePath + "' into table " + tableName; boolean result = statement.execute(sql); if( !result ){ return true; }else{ return false; } } //查询表中的数据: public ResultSet selectData(Statement statement, String tableName) throws SQLException { String sql = "select * from " + tableName; ResultSet rs = statement.executeQuery(sql); return rs; } //统计表中数据: public ResultSet countData(Statement statement, String sql) throws SQLException{ ResultSet rs = statement.executeQuery(sql); return rs; } //关闭连接: public void close(Connection conn,Statement statement) throws SQLException{ if (conn != null) { conn.close(); conn = null; } if (statement != null) { statement.close(); statement = null; } }}四:对基本操作的测试,如下创建TestMain:
public class TestMain { private HiveUtil hu = new HiveUtil(); private Connection conn = null; private Statement statement; //1.测试连接 @Test public void testConn() throws SQLException{ conn = hu.getConn(); System.out.println( "获取连接为: "+ conn ); } //2.创建表: @Test public void testCreateTable() throws SQLException{ conn = hu.getConn(); statement = conn.createStatement(); String tableName = "testhive"; String sql = "create table " + tableName + " (key int, value string) row format delimited fields terminated by '\t'"; boolean result = hu.createTable(statement, sql); if( result ){ System.out.println( "创建表成功。" + result ); }else{ System.out.println( "创建表失败。" + result ); } } //3.判断表是否存在 @Test public void testTableIsExists() throws SQLException{ conn = hu.getConn(); statement = conn.createStatement(); String tableName = "testhive"; boolean result = hu.tableIsExists(statement, tableName); if(result){ System.out.println( "表已经存在。" ); }else{ System.out.println( "表不存在,请新建表。"); } } //4.删除表:删除表之前先判断表是否存在。 @Test public void testDropTable() throws SQLException{ conn = hu.getConn(); statement = conn.createStatement(); String tableName = "testhive"; boolean result = hu.tableIsExists(statement, tableName); if(result){ System.out.println( "表已经存在,开始删除这张表: " ); result = hu.dropTable(statement, tableName); if( result ){ System.out.println( "删除表成功。"); }else{ System.out.println( "删除表失败。"); } }else{ System.out.println( "表不存在,请新建表。"); } } //5.显示所有的表 @Test public void testShowTables() throws SQLException{ conn = hu.getConn(); statement = conn.createStatement(); String tableName = "testhive"; ResultSet rs = hu.showTables(statement, tableName); while( rs.next() ){ System.out.println( "表名为: "+ rs.getString(1)); } } //6.对表的描述 @Test public void testDescribeTable() throws SQLException{ conn = hu.getConn(); statement = conn.createStatement(); String tableName = "testhive"; //首先判断张表是否存在: boolean result = hu.tableIsExists(statement, tableName); if( result ){ //表示表已经存在: ResultSet rs = hu.describeTable(statement, tableName); while( rs.next() ){ System.out.println( rs.getString(1) ); } }else{ System.out.println( "Error: 表不存在,不能对表描述。"); } } //7.导入数据: local 和 hdfs @Test public void testLoadData() throws SQLException{ conn = hu.getConn(); statement = conn.createStatement(); String tableName = "testhive"; //String localFilePath = "/home/hadoop/mytestdata/hive.txt"; String hdfsFilePath = "hdfs://master:9000/user/hive/hive.txt"; //首先判断张表是否存在: boolean result = hu.tableIsExists(statement, tableName); if( result ){ //表示表已经存在: //加载导入本地数据 //result = hu.loadDataFromLocal(statement, tableName, localFilePath); //加载导入HDFS上文件数据 result = hu.loadDataFromHDFS(statement, tableName, hdfsFilePath); if( result ){ System.out.println( "成功将本地文件数据导入到表" + tableName + "中" ); }else{ System.out.println( " 导入失败 。"); } }else{ System.out.println( "Error: 表不存在,不能对表导入文件数据。"); } } //8.查询表中的数据: @Test public void testSelectData() throws SQLException{ conn = hu.getConn(); statement = conn.createStatement(); String tableName = "testhive"; //首先判断张表是否存在: boolean result = hu.tableIsExists(statement, tableName); if( result ){ //表示表已经存在: ResultSet rs = hu.selectData(statement, tableName); while( rs.next() ){ System.out.println( rs.getString(1) +"\t"+ rs.getString(2) ); } }else{ System.out.println( "Error: 表不存在,不能对表导入文件数据。"); } } //9.统计表中的数据: @Test public void testCountData() throws SQLException{ conn = hu.getConn(); statement = conn.createStatement(); String tableName = "testhive"; //首先判断张表是否存在: boolean result = hu.tableIsExists(statement, tableName); if( result ){ //表示表已经存在: String sql = "select count(1) from " + tableName; ResultSet rs = hu.countData(statement, sql); System.out.println( rs ); while( rs.next() ){ System.out.println( "当前记录数据量为: " + rs.getString(1) ); } }else{ System.out.println( "Error: 表不存在,不能统计数据。"); } } }5.测试数据:(以Tab隔开。)
1 Berg1 Berg2 Cccc3 Xxxx4 Jjjj
当然 ,也可创建Maven 的依赖,我的如下:
pentaho-aggdesigner-algorithm
以上是"Hive的基本操作有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数据
文件
基本操作
成功
方式
篇文章
测试
统计
内容
查询表
结果
统计表
路径
查询
不怎么
关键
关键字
大部分
对象
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
大唐无双服务器是内部消息吗
pdf怎么导入sql数据库
计算机网络技术对口考试试题
网络安全监测装置投入运行
网络安全b类安全
河北教育软件开发搭建服务商
大实际软件开发
北戴河网络安全性
淘客软件开发葳fxsh33
手机端软件开发费用
软件开发生命周期安全管理
什么情况出现数据库死锁
超市收费系统的数据库
网络安全周国旗下演讲
江苏无锡网络安全技能大赛
数据库怎么自定义表格
orcl数据库导表输入
如何查看班级网络安全作业
武汉幸会网络技术有限公司
参观网络安全科技馆感想
小企业网络安全备份
志禧网络技术有限公司销售
服务器登录失败无法输入开机密码
抖音网络技术教程网
加强网络安全管理自查报告
cuda 云服务器
苏州吱嘎网络技术
宝可梦多人联机服务器
在日软件开发工作
服务器开服前后