Hive参数配置
1. Hive CLL
-
$HIVE_HOME/bin/hive是一个shellUtil,通常称之为hive的第一代客户端或者旧客户端,主要功能有两个
-
用于交互式或批处理模式运行Hive查询,注意,此时客户端,需要并且能够访问的是Hive metastore服务,而不是hiveserver2服务
-
用于hive相关服务的启动,比如metastore服务
-
常见命令
-e <quoted-query-string> 执行命令行-e参数后指定的sql语句 运行完退出。 -f <filename> 执行命令行-f参数后指定的sql文件 运行完退出。 -H,--help 打印帮助信息 --hiveconf <property=value> 设置参数 -S,--silent 静默模式 -v,--verbose 详细模式,将执行sql回显到console --service service_name 启动hive的相关服务
- 当使用**-e或-f选项**运行$ HIVE_HOME / bin / hive时,它将以批处理模式执行SQL命令,一次执行,执行完毕退出
- 交互式模式:客户端和Hive服务一直保持连接,除非手动退出客户端
-
2. Beeline CLL
- $HIVE_HOME/bin/beeline被称之为第二代客户端或者新客户端,是一个JDBC客户端,是官方强烈推荐使用的Hive命令行工具,和第一代客户端相比,性能加强安全性提高。Beeline在嵌入式模式和远程模式下均可工作。
- 远程模式下 beeline 通过 Thrift 连接到单独的 HiveServer2 服务上。
3. Configuration Properties 配置属性
-
配置属性概述
- Hive作为一款复杂的数据仓库软件,除了一些默认的属性行为之外,还支持用户配置属性进行修改,使得在某些场景下满足用户的需求。
- 作为用户我们需要掌握两件事:
- Hive有哪些属性支持修改,修改有什么功能
- Hive支持那种方式进行修改,修改是临时有效还是永久生效
- Hive配置属性的规范列表是在HiveConf.Java类中管理的,从Hive 0.14.0开始,会从HiveConf.java类中直接生成配置模板文件hive-default.xml.template,它是当前版本配置及其默认值的可靠来源。
-
修改配置属性方式
-
hive-site。xml配置文件
- 在$HIVE_HOME/conf路径下,可以添加一个hive-site.xml文件,把需要定义修改的配置属性添加进去,这个配置文件会影响到这个Hive安装包的任何一种服务启动、客户端使用方式,可以理解为是Hive的全局配置
-
hiveconf命令行参数
-
hiveconf是一个命令行的参数,用于在使用Hive CLI或者Beeline CLI的时候指定配置参数。这种方式的配置在整个的会话session中有效,会话结束,失效。
-
比如在启动hive服务的时候,为了更好的查看启动详情,可以通过hiveconf参数修改日志级别:
$HIVE_HOME/bin/hive --hiveconf hive.root.logger=DEBUG,console
-
-
set 命令
-
在Hive CLI或Beeline中使用set****命令为set命令之后的所有SQL语句设置配置参数,这个也是会话级别的
-
这种方式也是用户日常开发中使用最多的一种配置参数方式。因为Hive倡导一种:谁需要、谁配置、谁使用的一种思想,避免你的属性修改影响其他用户的修改
#启用hive动态分区,需要在hive会话中设置两个参数: set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict;
-
-
服务器特定的配置文件
- 可以设置特定metastore的配置值hivemetastore-site.xml中,并在HiveServer2特定的配置值hiveserver2-site.xml中。
- Hive Metastore服务器读取$ HIVE_CONF_DIR或类路径中可用的hive-site.xml以及hivemetastore-site.xml配置文件。
- HiveServer2读取$ HIVE_CONF_DIR或类路径中可用的hive-site.xml以及hiveserver2-site.xml。
- 如果HiveServer2以嵌入式模式使用元存储,则还将加载hivemetastore-site.xml。
-
-
概括总结
- 配置文件的优先顺序如下,后面的优先级越高
- hive-site.xml -> hivemetastore-site.xml -> hiveserver2-site.xml -> ’ -hiveconf’命令行参数
- 配置方式的优先级顺序,优先级依次递增:
- set参数生命 > hiveconf命令行参数 > hive-site.xml配置文件。
- 即set参数声明覆盖命令行参数hiveconf,命令行参数覆盖配置文件hive-site.xml设定。
- 日常的开发使用中,如果不是核心的需要全局修改的参数属性,建议使用set命令进行设置。
- Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。
- 配置文件的优先顺序如下,后面的优先级越高