hive-site.xml配置

可在 hive-site.xml 中增加以下常用配置,方便使用。

  • 数据存储位置
1
2
3
4
5
6
<!-- 数据默认的存储位置(HDFS) -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
  • 显示当前库
1
2
3
4
5
6
<!-- 在命令行中,显示当前操作的数据库 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
  • 显示表头属性
1
2
3
4
5
<!-- 在命令行中,显示数据的表头 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
  • 本地模式
1
2
3
4
5
6
<!-- 操作小规模数据时,使用本地模式,提高效率 -->
<property>
<name>hive.exec.mode.local.auto</name>
<value>true</value>
<description>Let Hive determine whether to run in local mode automatically</description>
</property>

备注:当 Hive 的输入数据量非常小时,Hive 通过本地模式在单台机器上处理所有的任务。

对于小数据集,执行时间会明显被缩短。当一个job满足如下条件才能真正使用本地模式:

job的输入数据量必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB)
job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max (默认4)
job的reduce数必须为0或者1

Hive的日志文件

Hive的log默认存放在/tmp/root目录下(root为当前用户名);这个位置可以修改。

1
2
3
vi /opt/lagou/servers/hive-2.3.7/conf/hive-log4j2.properties
# 添加以下内容:
property.hive.log.dir = /opt/lagou/servers/hive-2.3.7/logs

可以不修改,但是要知道位置。

Linux添加第三方用户Hadoop

1
2
3
4
5
6
7
8
9
10
11
12
groupadd hadoop
# -m:自动建立用户的登入目录
# -g:指定用户所属的起始群组
# -G<群组>:指定用户所属的附加群组
# -s:指定用户登入后所使用的shell
useradd -m hadoop -g hadoop -s /bin/bash

passwd hadoop

visudo
# 在100行后添加。允许用户执行sudo,免密
hadoop ALL=(ALL) NOPASSWD:ALL

建议:现阶段使用root用户

参数配置方式

  • 查看参数配置信息
1
2
3
4
5
# 查看全部参数
hive> set;

# 查看某个参数
hive> set hive.exec.mode.local.auto;
  • 参数配置的三种方式

    1. hive命令行指定参数(set)

    2. 启动hive时指定参数(-hiveconf)

    3. 用户自定义配置文件(hive-site.xml、hive-default.xml)

配置信息的优先级: set > -hiveconf > hive-site.xml > hive-default.xml

hive命令行指定参数(set)

可在 Hive 命令行中使用SET关键字设定参数,仅对本次启动有效。如下:

1
2
# 设置参数
hive> set hive.exec.mode.local.auto=false;

启动时指定参数值(-hiveconf)

启动Hive时,可以在命令行添加 -hiveconf param=value 来设定参数,仅对本次启动有效。如下:

1
2
3
4
5
# 启动时指定参数
hive -hiveconf hive.exec.mode.local.auto=true

# 在命令行检查参数值设置是否生效
hive> set hive.exec.mode.local.auto;

用户自定义配置文件(hive-site.xml、hive-default.xml)

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

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

配置文件的设定对本机启动的所有Hive进程有效;

Hive命令

基础命令

1
2
3
4
5
6
7
8
9
10
11
12
13
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)

-e:不进入hive交互窗口,执行sql语句

1
hive -e "select * from users"

-f:执行脚本中sql语句

1
2
3
4
5
6
# 创建文件hqlfile1.sql,内容:select * from users
# 执行文件中的SQL语句
hive -f hqlfile1.sql

# 执行文件中的SQL语句,将结果写入文件
hive -f hqlfile1.sql >> result1.log

退出Hive命令行

1
2
exit;
quit;

在命令行执行其它程序命令

1
2
3
4
5
6
# shell 命令
hive> ! ls;
hive> ! clear;

# dfs 命令
hive> dfs -ls / ;