当前位置: 首页 > news >正文

Hive的使用方式

操作Hive可以在Shell命令行下操作,或者是使用JDBC代码的方式操作

针对命令行这种方式,其实还有两种使用
第一个是使用bin目录下的hive命令,这个是从hive一开始就支持的使用方式
后来又出现一个beeline命令,它是通过HiveServer2服务连接hive,它是一个轻量级的客户端工具,所以后来官方开始推荐使用这个。

针对我们写的hive sql通过哪一种客户端去执行结果都是一样的,没有任何区别,所以在这里我们使用哪个就无所谓了。

1)第一种方式:运行bin/hive

show tables;

create table t1(id int,name string);

 insert into t1(id,name) values(1,"zs");

select * from t1;

drop table t1;

可以输入quit退出hive的命令行,或者直接按ctrl+c也可以退出

2)第二种方式:

启动hiveserver2服务之后

hiveserver2默认会监听本机的10000端口,所以命令是这样的
bin/beeline -u jdbc:hive2://localhost:10000

如果遇到权限问题:

2. 在启动beeline的时候指定一个对这个目录有操作权限的用户
bin/beeline -u jdbc:hive2://localhost:10000 -n root

3)第三种方式:JDBC这种方式也需要连接hiveserver2服务,前面我们已经启动了hiveserver2服务,在这里直接使用就可以了

创建maven项目 db_hive
在pom中添加hive-jdbc的依赖

<!-- hive-jdbc驱动 -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.2</version>
</dependency>

写代码:

/**
* JDBC代码操作 Hive
* 注意:需要先启动hiveserver2服务
* Created by xuwei
*/
public class HiveJdbcDemo {
public static void main(String[] args) throws Exception{
//指定hiveserver2的连接
String jdbcUrl = "jdbc:hive2://192.168.182.103:10000";
//获取jdbc连接,这里的user使用root,就是linux中的用户名,password随便指定即
Connection conn = DriverManager.getConnection(jdbcUrl, "root", "any")
//获取Statement
Statement stmt = conn.createStatement();
//指定查询的sql
String sql = "select * from t1";
//执行sql
ResultSet res = stmt.executeQuery(sql);
//循环读取结果
while (res.next()){
System.out.println(res.getInt("id")+"\t"+res.getString("name"));
}
}
}

在hive命令行中可以使用set命令临时设置一些参数的值,其实就是临时修改hive-site.xml中参数的值。不过通过set命令设置的参数只在当前会话有效,退出重新打开就无效了
如果想要对当前机器上的当前用户有效的话可以把命令配置在 ~/.hiverc文件中
所以总结一下,使用set命令配置的参数是当前会话有效,在~/.hiverc文件中配置的是当前机器中的当前用户有效,而在hive-site.xml中配置的则是永久有效了,
在hive-site.xml中有一个参数是 hive.cli.print.current.db ,这个参数可以显示当前所在的数据库名
称,默认值为 false 。在这里我们设置为true

http://www.lryc.cn/news/21297.html

相关文章:

  • Flume三大核心组件
  • 数据结构(六)二叉树
  • Docker buildx 的跨平台编译
  • 【java基础】方法重载和方法重写
  • Gradle7.4安装与基本使用
  • [系统安全] 虚拟化安全之虚拟化概述
  • 如何从零开始系统的学习项目管理?
  • 面试题-----
  • 线材-电子线载流能力
  • 单变量回归问题
  • ubuntu/linux系统知识(36)linux网卡命名规则
  • java的一些冷知识
  • java代理模式
  • JUC包:CountDownLatch源码+实例讲解
  • Log4j2基本使用
  • A2L在CAN FD总线的使用
  • Android JetPack之启动优化StartUp初始化组件的详解和使用
  • [11]云计算|简答题|案例分析|云交付|云部署|负载均衡器|时间戳
  • C++11/C++14:lambda表达式
  • 算法课堂-分治算法
  • 操作系统权限提升(十六)之绕过UAC提权-CVE-2019-1388 UAC提权
  • 实例9:四足机器人运动学正解平面RR单腿可视化
  • 堆的基本存储
  • 如何获取物体立体信息通过一个相机
  • 【数据挖掘实战】——中医证型的关联规则挖掘(Apriori算法)
  • 一些硬件学习的注意事项与快捷方法
  • 【Tomcat】Tomcat安装及环境配置
  • 负载均衡:LVS 笔记(二)
  • SEO优化:干货技巧分享,包新站1-15天100%收录首页
  • JavaWeb测试题