赞
踩
我们可以通过 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执行)
常规操作,需要通过 bin/hive
方式进入 Hive 客户端来执行SQL脚本。也可以在不进入 Hive 客户端的情形下,直接去执行 SQL脚本,这就用到了 Hive 的交互命令 -e
、-f
了
-e:不进入 hive 的交互窗口执行SQL语句
-f:执行文件中的SQL脚本语句
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 客户端,通过 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 文件即可,所有的配置就都在该文件下)
共有以下 3 种方式:
默认配置文件:hive-default.xml
用户自定义配置文件:hive-site.xml
注意:用户自定义配置会覆盖默认配置。
另外,Hive 也会读入 Hadoop 的配置,因为 Hive 是作为 Hadoop 的客户端启动的,Hive 的配置会覆盖 Hadoop 的配置
。配置文件的设定对本机启动的所有 Hive 进程都有效。
有的配置信息,只有在当前任务执行需要此配置,如果将该配置添加至 hive-site.xml
中,那么每个任务都会使用此配置。这个显然就是不妥咯。(比如:当前任务中,有很多的小文件需要处理,此时就需要用到一个 CombinerInputFormat 临时在当前任务使用以下,其他任务也不受影响。这种情形就用到了下面的第2种方式)
启动 Hive 时,可以在命令行添加-hiveconf param=value
来设定参数。(这种方式配置,仅对当前启动的 Hive 客户端窗口有效,这种配置的优先级会比 hive-site.xml 中配置的优先级高)
[hadoop@hadoop201 hive]$ bin/hive -hiveconf mapred.reduce.tasks=10
除了以上 2 种方式外,我们还可以通过参数声明的方式
来指定配置。(即:进入 Hive 客户端,通过 set hive.cli.print.header=false
方式,类似参数声明的方式来进行配置。这种方式的配置,只对声明后的语句有效)
注意1: 上述三种设定方式的优先级依次递增。即
配置文件
<命令行参数
<参数声明
。注意某些系统级的参数,例如 log4j 相关的设定,必须用前两种方式设定,因为那些参数的读取在会话建立以前已经完成了。
注意2:凡是能通过 set 设置的属性,一定是在 hive-default.xml 配置中能够查询到的,log4j 这种就是查询不到的,所以没法设置
在 hive中,我们可以通过 -e
或 -f
,在不进入到 Hive 客户端中去执行SQL语句。所以:
hive -f 文件名
执行示例如图:
下一篇:Hive 数据类型
博主写作不易,加个关注呗
求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙
我不能保证所写的内容都正确,但是可以保证不复制、不粘贴。保证每一句话、每一行代码都是亲手敲过的,错误也请指出,望轻喷 Thanks♪(・ω・)ノ
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。