Hive02_基本使用,常用命令

一、Hive基本概念

1 什么是 Hive

1)hive 简介

Hive:由 Facebook 开源用于解决海量结构化日志的数据统计工具。

Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。

2)Hive 本质:将 HQL 转化成 MapReduce 程序

  1. Hive 处理的数据存储在 HDF

  2. Hive 分析数据底层的实现是 MapReduce

  3. 执行程序运行在 Yarn 上

2 hive优缺点

hive多用于海量结构化日志数据分析,如统计网站一个时间段内的pv、uv,多维度数据分析。

优点:

1、简单,容易上手,提供了类SQL查询语言HQL;

2、为超大数据集设计的计算/扩展能力;

3、统一的元数据管理,可在多各组件进行数据共享;

缺点:

1、hive的HQL表达能力有限,对于迭代式算法和复杂运算无法表达;

2、hive效率较低,自动生成MapReduce作业,通常不够智能,并且调优困难,粒度较粗,可控性差;

二 、Hive的基本操作

1 hive的简单使用

启动hive,在hive中创建一张表

sql 复制代码
create table mytest(id varchar(20));

查看此表的位置 /user/hive/warehouse/mytest

退出hive,创建一个txt文档,并写入数据

sh 复制代码
touch test.txt
vi test.txt

写入数据:

复制代码
1001
1002
1003

将test.txt放入表中

sh 复制代码
hadoop fs -put test.txt /user/hive/warehouse/mytest

启动hive,查看表中的数据

sh 复制代码
hive> select *  from mytest;

查看表信息:

打开mysql中 metastore库,找到DBS表

找到TBLS表

2 使用元数据服2务的方式访问 Hive

1)在 hive-site.xml 文件中添加如下配置信息

xml 复制代码
 <!-- 指定存储元数据要连接的地址 -->
 <property>
 	<name>hive.metastore.uris</name>
 	<value>thrift://192.168.149.151:9083</value>
 </property>

2)启动 metastore

sh 复制代码
[root@hadoop2 hive]# bin/hive --service metastore

2023-09-21 00:49:18: Starting Hive Metastore Server

注意: 启动后窗口不能再操作,需打开一个新的 shell 窗口做别的操作

如果启动报错,查看jps服务,杀掉RunJar;

sh 复制代码
[root@hadoop2 hive]# kill -9 3034

3在新窗口重新启动hive

shell 复制代码
[root@hadoop$HIVE_HOME/bin/hive

3 使用jdbc连接hive

1)在 hive-site.xml 文件中添加如下配置信息

xml 复制代码
 <!-- 指定 hiveserver2 连接的 host -->
 <property>
 	<name>hive.server2.thrift.bind.host</name>
 	<value>192.168.149.151</value>
 </property>

 <!-- 指定 hiveserver2 连接的端口号 -->
 <property>
 	<name>hive.server2.thrift.port</name>
 	<value>10000</value>
 </property>

2)启动 hiveserver2

sh 复制代码
[root@localhost hive]$ bin/hive --service hiveserver2

3)启动 beeline 客户端(需要多等待一会)

sh 复制代码
[root@loaclhost hive]$ bin/beeline -u jdbc:hive2://0: jdbc:hive2://192.168.149.151:10000 -n root

4)看到如下界面

Connecting to jdbc:hive2://hadoop102:10000

Connected to: Apache Hive (version 3.1.2)

Driver: Hive JDBC (version 3.1.2)

Transaction isolation: TRANSACTION_REPEATABLE_READ

Beeline version 3.1.2 by Apache Hive

0: jdbc:hive2://192.168.149.151:10000>

三、 Hive 常用交互命令

1 查看hive常用命令a

sh 复制代码
[root@hadoop2 hive]# $HIVE_HOME -help
sh 复制代码
$ hive -help
usage: hive
 -d,--define <key=value>          Variable substitution to apply to Hive
                                  commands. e.g. -d A=B or --define A=B
    --database <databasename>     Specify the database to use
 -e <quoted-query-string>         SQL from command line
 -f <filename>                    SQL from files
 -H,--help                        Print help information
    --hiveconf <property=value>   Use value for given property
    --hivevar <key=value>         Variable substitution to apply to Hive
                                  commands. e.g. --hivevar A=B
 -i <filename>                    Initialization SQL file
 -S,--silent                      Silent mode in interactive shell
 -v,--verbose                     Verbose mode (echo executed SQL to the
                                  console)

1)"-e"不进入 hive 的交互窗口执行 sql 语句

复制代码
[root@hadoop2 hive]# bin/hive -e "select * from mytest;"

2)"-f"执行脚本中 sql 语句

(1)在/usr/soft/hive/下创建 datas 目录并在 datas 目录下创建 hivef.sql 文件

shell 复制代码
[root@hadoop2 hive]# mkdir datas
[root@hadoop2 datas]# touch hivef.sql 
[root@hadoop2 datas]# vi hivef.sql 

(2)文件中写入正确的 sql 语句

sql 复制代码
select * from mytest;
select count(id) from mytest;

(3)执行文件中的 sql 语句

sh 复制代码
[root@hadoop2 hive]# bin/hive -f $HIVE_HOME/datas/hivef.sql

(4)执行文件中的 sql 语句并将结果写入文件中

shell 复制代码
[root@hadoop2 hive]# bin/hive -f $HIVE_HOME/datas/hivef.sql >/usr/soft/hive/datas/hive_result.txt

四、Hive 其他命令操作

1)退出 hive 窗口:

sh 复制代码
hive(default)>exit;
hive(default)>quit;

2)在 hive cli 命令窗口中如何查看 hdfs 文件系统

sh 复制代码
hive(default)>dfs -ls /;

3)查看在 hive 中输入的所有历史命令

(1)进入到当前用户的根目录 /root

(2)查看. hivehistory 文件

sh 复制代码
[root@hadoop2 ~]#  cat .hivehistory

Hive 运行日志信息配置

1)Hive 的 log 默认存放在/tmp/root/hive.log 目录下(当前用户名下)

2)修改 hive 的 log 存放日志到/uer/soft/hive/logs

(1)修改/usr/soft/hive/conf/hive-log4j2.properties.template 文件名称为

hive-log4j2.properties

sh 复制代码
[root@hadoop2 conf]# mv hive-log4j2.properties.template hive-log4j2.properties

(2)在 hive-log4j2.properties 文件中修改 log 存放位置

properties 复制代码
property.hive.log.dir = /usr/soft/hive/logs

1 打印 当前库名 和 表头信息

在 hive-site.xml 中加入如下两个配置:

xml 复制代码
<property>
	 <name>hive.cli.print.header</name>
 	<value>true</value>
 </property>
 <property>
 	<name>hive.cli.print.current.db</name>
 	<value>true</value>
 </property>

2 参数配置方式

1)查看当前所有的配置信息

shell 复制代码
hive>set;

2)参数的配置三种方式

1)配置文件方式

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

用户自定义配置文件:hive-site.xml
注意:用户自定义配置会覆盖默认配置。另外,Hive 也会读入 Hadoop 的配置,因为 Hive
是作为 Hadoop 的客户端启动的,Hive 的配置会覆盖 Hadoop 的配置。配置文件的设定对本
机启动的所有 Hive 进程都有效。

(2)命令行参数方式

启动 Hive 时,可以在命令行添加-hiveconf param=value 来设定参数。

例如:

shell 复制代码
[root@hadoop2 hive]$ bin/hive -hiveconf mapred.reduce.tasks=10;

注意:仅对本次 hive 启动有效

查看参数设置:

sh 复制代码
hive (default)> set mapred.reduce.tasks;

(3)参数声明方式

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

例如:

sh 复制代码
hive (default)> set mapred.reduce.tasks=100;

注意:仅对本次 hive 启动有效。

上述三种设定方式的优先级依次递增。即配置文件<命令行参数<参数声明。注意某些系
统级的参数,例如 log4j 相关的设定,必须用前两种方式设定,因为那些参数的读取在会话

nf mapred.reduce.tasks=10;

复制代码
*注意:仅对本次 hive 启动有效*

查看参数设置:

```sh
hive (default)> set mapred.reduce.tasks;

(3)参数声明方式

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

例如:

sh 复制代码
hive (default)> set mapred.reduce.tasks=100;

注意:仅对本次 hive 启动有效。

上述三种设定方式的优先级依次递增。即配置文件<命令行参数<参数声明。注意某些系
统级的参数,例如 log4j 相关的设定,必须用前两种方式设定,因为那些参数的读取在会话
建立以前已经完成了

相关推荐
Agatha方艺璇6 小时前
Hive基础简介
数据仓库·hive·hadoop
像豆芽一样优秀2 天前
Hive和Flink数据倾斜问题
大数据·数据仓库·hive·hadoop·flink
howard20052 天前
VMWare上搭建Hive集群
hive·hadoop
程序猿 董班长4 天前
springboot配置多数据源(mysql、hive)
hive·spring boot·mysql
XueminXu4 天前
Hive使用Tez引擎出现OOM的解决方法
hive·oom·tez·datagrip·container·outofmemory
KANGBboy7 天前
hive udf 执行一次调用多次问题
数据仓库·hive·hadoop
来杯雀巢咖啡8 天前
ubantu安装配置hive
数据仓库·hive·hadoop
chad__chang10 天前
HIVE的Window functions窗口函数【二】
数据仓库·hive·hadoop
張萠飛10 天前
hive on tez为什么写表时,要写临时文件到hdfs目录
hive·hadoop·hdfs
白日与明月10 天前
Hive中的with子句
数据仓库·hive