Hive 连接及使用

news/2024/11/20 21:19:10/

1. 连接

有三种方式连接 hive

  • cli:直接输入 bin/hive 就可以进入 cli
  • hiveserver2、beeline
  • webui

1.1 hiveserver2/beeline

1、开启 hiveserver2 服务

// 前台运行,当 beeline 输入命令时,服务端会返回 OK
[root@hadoop1 bin]# ./hiveserver2
OK// 后台运行,1:表示标准日志输出、2:表示错误日志输出 如果我没有配置日志的输出路径,日志会生成在当前工作目录,默认的日志名称叫做: nohup.xxx
nohup hiveserver2 1>/home/hadoop/hiveserver.log 2>/home/hadoop/hiveserver.err &
或者:nohup hiveserver2 1>/dev/null 2>/dev/null &
或者:nohup hiveserver2 >/dev/null 2>&1 &

2、启动 beeline 客户端连接

[hadoop@hadoop1 bin]$ ./beeline// 这里为 hadoop 的用户名
beeline> !connect jdbc:hive2://hadoop1:10000
Connecting to jdbc:hive2://hadoop1:10000
Enter username for jdbc:hive2://hadoop1:10000: hadoop
Enter password for jdbc:hive2://hadoop1:10000: ******
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hadoop1:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
| hive_1         |
+----------------+--+
2 rows selected (4.183 seconds)
0: jdbc:hive2://hadoop1:10000>// 指定用户名连接
beeline -u jdbc:hive2://hadoop1:10000 -n hadoop

参考文章:Hive学习之路 (四)Hive的连接3种连接方式

2. 交互式命令

// -e 不进入hive的交互窗口执行sql语句
bin/hive -e "select id from student;"// -f 执行脚本中的 sql 语句,hivef.sql 语句:select *from student;
bin/hive -f /opt/module/datas/hivef.sql
bin/hive -f /opt/module/datas/hivef.sql  > /opt/module/datas/hive_result.txt// 退出
exit、quit// 查看 hdfs 文件系统
dfs -ls /;// 查看本地文件系统
! ls /opt/module/datas;// 查看在hive中输入的所有历史命令,一般为当前用户的根目录 /root 或 /home 目录 
cat /home/hadoop/.hivehistory// 其他常用命令
show databases;
show tables;
drop table tableName;
desc tableName;		// 查看表结构
use default;		// 使用数据库

3. 常见属性配置

3.1 数据仓库位置

Default 数据仓库的最原始位置是在 hdfs 上的:/user/hive/warehouse 路径下,修改位置:

<!--hive-default.xml.template 拷贝到 hive-site.xml文件中--><property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>

配置完后,需要修改同组用户权限:

bin/hdfs dfs -chmod g+w /user/hive/warehouse

注意:重启 hive cli 才会生效

3.2 修改查询结果显示信息

1、新建一张表 student,并插入数据:

// 以 \t 作为分隔符
[hadoop@hadoop1 apps]$ vim my_code/student.txt// 检查分隔符
[hadoop@hadoop1 apps]$ cat -T my_code/student.txt	
1001^Izhangshan
1002^Ilishi
1003^Izhaoliu// 创建一张表 student,数据以 \t 作为分隔符
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
OK
Time taken: 0.463 seconds// 从本地导入数据
hive> load data local inpath '/home/hadoop/apps/my_code/student.txt' into table student;
Loading data to table hive_1.student
Table hive_1.student stats: [numFiles=1, totalSize=39]
OK
Time taken: 0.846 seconds// 查询(发现没有显示具体列名等信息)
hive> select * from student;
OK
1001    zhangshan
1002    lishi
1003    zhaoliu
Time taken: 0.229 seconds, Fetched: 3 row(s)

2、修改 hive-site.xml文件中添加如下配置信息:

<property><name>hive.cli.print.header</name><value>true</value>
</property><property><name>hive.cli.print.current.db</name><value>true</value>
</property>

3、重启 hive

// 显示列名
hive (hive_1)> select * from student;
OK
student.id      student.name
1001    zhangshan
1002    lishi
1003    zhaoliu
Time taken: 1.636 seconds, Fetched: 3 row(s)

3.3 Hive 运行日志信息配置

1、默认日志路径:/tmp/hadoop/hive.log

2、修改 hive-log4j.properties

[hadoop@hadoop1 apps]$ cd hive/conf/
[hadoop@hadoop1 conf]$ ls
beeline-log4j.properties.template  hive-env.sh           hive-exec-log4j.properties.template  hive-site.xml
hive-default.xml.template          hive-env.sh.template  hive-log4j.properties.template       ivysettings.xml
[hadoop@hadoop1 conf]$ cp hive-log4j.properties.template hive-log4j.properties
[hadoop@hadoop1 conf]$ vim hive-log4j.properties// 修改日志路径
hive.log.dir=/home/hadoop/apps/hive/logs

3、重启 hive

3.4 参数配置方式

参数配置有三种方式:

  • 修改配置文件:对所有会话有效
  • 命令行参数:仅对本次会话有效,即退出 cli 就失效
  • 参数声明:上同

优先级:配置文件 < 命令行参数 < 参数声明

系统级的参数,log4j,必须用前两种方式设定,因为参数的读取在会话建立之前就完成了,推荐使用第一种方式

配置文件

  • 默认配置文件:hive-default.xml

  • 用户自定义配置文件:hive-site.xml

注意:用户自定义配置会覆盖默认配置,另外 hive 配置会覆盖 hadoop 配置,因为它会读取 hadoop 配置

命令行参数

即在启动 hive时通过命令行来添加一些参数,如:

// 格式:-hiveconf param=value
bin/hive -hiveconf mapred.reduce.tasks=10;// 查看配置hive (default)> set mapred.reduce.tasks;
mapred.reduce.tasks=-1

参数声明方式

可以在 HQL 中使用 SET 关键字设定参数

hive (default)> set mapred.reduce.tasks=100;

http://www.ppmy.cn/news/24119.html

相关文章

致敬白衣天使,学习Python读取

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、c 主页&#xff1a;阿玥的小东东 故事设定&#xff1a;现在学校要求对所有同学进行核酸采集&#xff0c;每位同学先在宿舍内等候防护人员&#xff08;以下简称“大白”&#xff09;叫号&#xff0c;叫到自己时去停车场排…

Android框架WiFi架构

同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 一、wpa_supplicant:wpa_supplicant本身开源项目源码,被谷歌收购之后加入Android移…

2.11整理(2)(主要关于teacher forcing)

teacher forcing 训练迭代过程早期的RNN预测能力非常弱&#xff0c;几乎不能给出好的生成结果。如果某一个unit产生了垃圾结果&#xff0c;必然会影响后面一片unit的学习。RNN存在着两种训练模式(mode): free-running mode&#xff1a;就是常见的那种训练网络的方式: 上一个sta…

电脑重装系统注册表恢复方法

​今天讲关于大家的电脑在遇到一些故障的时候&#xff0c;以及电脑用久了之后会卡顿&#xff0c;那么这时候大家一般都会给电脑重装系统。重装系统之后却发现自己电脑里的注册表不见了&#xff0c;重装系统后怎么恢复注册表?小编就带着大家一起学习重装系统注册表恢复到底是怎…

RocketMQ基础学习

前言&#xff1a; RocketMQ阿里开源的&#xff0c;一款分布式的消息中间件&#xff0c;它经过阿里的生产环境的高并发、高吞吐的考验&#xff0c;同时&#xff0c;还支持分布式事务等场景。RocketMQ使用Java语言进行开发&#xff0c;方便Java开发者学习源码。但是&#xff0c;R…

2.11知识点整理(关于pycharm,python,pytorch,conda)

pycharm 设置anaconda环境&#xff1a; File -> Settings->选择左侧的project xxx再选择打开Project Interpreter页->选择add添加解释器->添加Anaconda中Python解释器&#xff08;Anaconda安装目录下的python.exe&#xff09; (选择existing environment &#xff…

4.SpringWeb

一、创建项目LomBok:辅助开发工具&#xff0c;减少代码编写Spring Web:带上Spring MVC,可以做Web开发了Thymleaf: Web开发末班引擎&#xff08;不常用&#xff09;创建好&#xff0c;如下&#xff1a;static/ 放置静态资源的根目录templates/ 放置模板文件的根目录 二、资源配置…

Java学习记录day6

书接上回 类与对象 static关键字 static的作用&#xff1a; 修饰一个属性&#xff1a;声明为static的变量实质上就是一个全局变量,其生命周期为从类被加载开始一直到程序结束&#xff1b;修饰方法&#xff1a;无须本类的对象也可以调用该方法&#xff1b;修饰一个类&#x…