当前位置:   article > 正文

Hive 参数配置的三种方式_hiveconf

hiveconf

1.-e、-f命令的使用

  我们可以通过 bin/hive 命令进入 Hive客户端进行操作,除了 bin/hive 外,还有如下一些交互命令也可供我们使用。

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    (SQL来自命令行)
 -f <filename>                    SQL from files   (SQL来自文件)
 -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)   (详细模式,在控制台输出SQL执行)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

  常规操作,需要通过 bin/hive 方式进入 Hive 客户端来执行SQL脚本。也可以在不进入 Hive 客户端的情形下,直接去执行 SQL脚本,这就用到了 Hive 的交互命令 -e-f
在这里插入图片描述
-e:不进入 hive 的交互窗口执行SQL语句
在这里插入图片描述
-f:执行文件中的SQL脚本语句
在这里插入图片描述

2.Hive 参数配置方式

  Hive 的 conf 目录下都是相关配置文件。Hive 中的配置文件是 hive-default.xml,这个文件中包含hive所有的默认配置,里面的配置贼多,不方便查看。

  我们可以在 conf 目录下,vim 方式自定义一个 hive-site.xml 文件,Hive在启动时会动态的去加载 hive-site.xml 中我们自定义的配置信息。这里也涉及到配置文件加载优先级问题,类似 hadoop 中的 hdfs-default.xml 和 hdfs-site.xml 。hive-site.xml 配置会覆盖掉 hive-default.xml 中默认的配置

   在 Hadoop 中,配置文件的优先级别为:hive-default.xml < 服务器中配置的 hive-site.xml < 我们编写的代码中resources目录下得 hive-site.xml < 代码中通过Configuration,直接使用conf.set(key,value)方式设置。在Hive中也是一样的。

Ⅰ.查看当前Hive环境所有的配置信息

  可以进入 hive 客户端,通过 set 命令查看所有的配置信息。

hive> set;
或者通过
hive> set 配置对应的key; 来查看指定的配置信息
比如:
hive> set hive.cli.print.header; // 查看配置中,是否打印表头
在这里插入图片描述

  由于配置文件过多,一屏无法全部显示完整,如需查看我们可以将 hive 所有的配置信息追加到一个文件中,这样更方便查看。

[hadoop@hadoop201 bin]$ touch conf.txt  (创建一个文件conf.txt)
[hadoop@hadoop201 bin]$ hive -e “set” >> conf.txt  (通过hive -e 方式 执行 set,将结果追加至 conf.txt 文件下,查看 conf.txt 文件即可,所有的配置就都在该文件下)

Ⅱ.修改Hive中的配置参数

共有以下 3 种方式:

1.配置文件方式

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

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

  有的配置信息,只有在当前任务执行需要此配置,如果将该配置添加至 hive-site.xml 中,那么每个任务都会使用此配置。这个显然就是不妥咯。(比如:当前任务中,有很多的小文件需要处理,此时就需要用到一个 CombinerInputFormat 临时在当前任务使用以下,其他任务也不受影响。这种情形就用到了下面的第2种方式)

2.命令行参数方式配置

  启动 Hive 时,可以在命令行添加-hiveconf param=value 来设定参数。(这种方式配置,仅对当前启动的 Hive 客户端窗口有效,这种配置的优先级会比 hive-site.xml 中配置的优先级高)

[hadoop@hadoop201 hive]$ bin/hive -hiveconf mapred.reduce.tasks=10

在这里插入图片描述

3.参数声明方式

  除了以上 2 种方式外,我们还可以通过参数声明的方式来指定配置。(即:进入 Hive 客户端,通过 set hive.cli.print.header=false 方式,类似参数声明的方式来进行配置。这种方式的配置,只对声明后的语句有效)
在这里插入图片描述

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

  注意2:凡是能通过 set 设置的属性,一定是在 hive-default.xml 配置中能够查询到的,log4j 这种就是查询不到的,所以没法设置

Ⅲ.Hive的这些配置方式,我们如何使用呢?

 在 hive中,我们可以通过 -e-f ,在不进入到 Hive 客户端中去执行SQL语句。所以:

  1. 我们可以把配置信息写到SQL脚本前面,只给当前这个任务的这个文件使用;通过 hive -f 文件名执行
  2. 只给 hive -e “set mapred.reduce.tasks=10” select * from test; 只给当前 select 这条语句使用,类似一种临时生效的方式

示例如图:
在这里插入图片描述在这里插入图片描述

下一篇:Hive 数据类型


博主写作不易,加个关注呗

求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙

我不能保证所写的内容都正确,但是可以保证不复制、不粘贴。保证每一句话、每一行代码都是亲手敲过的,错误也请指出,望轻喷 Thanks♪(・ω・)ノ

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/884576
推荐阅读
相关标签
  

闽ICP备14008679号