Hive【基础知识 02-2】【Hive CLI 命令行工具使用】【详细举例-包含测试脚本文件】

本文介绍了如何使用Hive的命令行接口(CLI),包括通过`hive -H`查看帮助,直接进入交互式命令行,执行SQL命令,执行本地和HDFS上的SQL脚本文件,配置Hive运行时变量如`hive.exec.scratchdir`,以及设置用户自定义变量。内容详尽,适合初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备

准备阶段要创建数据库、创建表、导入数据,内容较多所有单独写了一篇《CLI和Beeline命令行使用举例(准备阶段)》

【首先要启动hdfs,由于已将 Hive 的 bin 目录配置到环境变量,直接使用 hive 命令即可】

1. Help

【进入Hive CLI之前】使用 hive -H 或者 hive --help 命令可以查看所有命令的帮助,显示如下:

[root@tcloud ~]# hive -H
Hive Session ID = c4d07f3d-816f-4c1b-85e9-6c8ce2ed4c2a
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)

备注翻译版:

Hive Session ID = c4d07f3d-816f-4c1b-85e9-6c8ce2ed4c2a
usage: hive
-d,--define <key=value> 		# 定义用户自定义变量
	--database <databasename> 	# 指定使用的数据库
-e <quoted-query-string> 		# 执行command line 里的 SQL
-f <filename> 					# 执行 SQL 脚本文件
-H,--help 						# 打印帮助信息
	--hiveconf <property=value> # 使用自定义的配置
	--hivevar <key=value> 		# 定义用户自定义变量
-i <filename> 					# 在进入交互模式之前运行初始化脚本
-S,--silent 					# 静默模式
-v,--verbose 					# 详细模式【会显示执行的SQL】

2. 交互式命令行

【直接输入 hive 不加任何参数即可进入 Hive CLI 交互式命令行】

[root@tcloud ~]# hive
Hive Session ID = 6a9fba3d-c9cc-4439-8125-a6bc6b349bb3
# 这里省略部分信息
Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive Session ID = 90d75c12-b292-467f-b860-7bd67ab454b6
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive> 

3. 执行SQL命令

在【不进入交互式命令行】的情况下,可以使用 hive -e 执行 SQL 命令。

# 【这里不再贴出hive的日志】
[root@tcloud ~]# hive -e 'select * from hive_test.word_count';
Hive Session ID = f2b850c9-47d4-4076-b92a-7cb1632291e0
spark   3
hive    3
hadoop  2
kafka   1
hbase   1
Time taken: 12.023 seconds, Fetched: 5 row(s)

4. 执行SQL脚本文件

在【不进入交互式命令行】的情况下执行脚本文件,用于执行的脚本可以在本地文件系统,也可以在 HDFS 上,这里都进行测试:

-- 其中  hive_test.sql 内容如下
select * from hive_test.word_count;

本地文件系统:

# 【这里不再贴出hive的日志和查询结果】
[root@tcloud ~]# hive -f /home/hive/testFile/hive_test.sql;

HDFS文件系统:

# 准备阶段已将文件上传到hdfs 【这里不再贴出hive的日志和查询结果】
[root@tcloud ~]# hive -f hdfs://tcloud:8020/tmp/hive/test/hive_test.sql;

5. 命令行配置Hive变量

可以使用 --hiveconf 设置 Hive 运行时的变量。

# 【这里不再贴出hive的日志和查询结果】
[root@tcloud ~]# hive -e 'select * from hive_test.word_count' \
--hiveconf hive.exec.scratchdir=/tmp/hive/test/hive_scratch \
--hiveconf mapred.reduce.tasks=4;

hive.exec.scratchdir:指定 HDFS 上目录位置,用于存储不同 map/reduce 阶段的执行计划和这些阶段的中间输出结果。

6. 文件配置启动变量

hive-init.conf 的内容如下:

# hive.exec.mode.local.auto 默认值为 false 这里设置为 true 代表开启本地模式
set hive.exec.mode.local.auto = true;
# 使用 -i 可以在进入交互模式之前运行初始化脚本 相当于指定配置文件启动
[root@tcloud ~]# hive -i /home/hive/testFile/hive_init.conf;

验证:

# 可以在交互模式下使用 set; 查询 hive 全部的配置信息

# 未使用 /home/hive/testFile/hive_init.conf 启动的CLI
hive> set hive.exec.mode.local.auto;
hive.exec.mode.local.auto=false

# 使用 /home/hive/testFile/hive_init.conf 启动的CLI
hive> set hive.exec.mode.local.auto;
hive.exec.mode.local.auto=true

7. 用户自定义变量

–define <key=value> 和 --hivevar <key=value> 在功能上是等价的,都是用来实现自定义变量,这里给出一个示例:

# 定义变量:
[root@tcloud ~]# hive --define tableName=word_count --hivevar selectField=word;

# 在查询中引用自定义变量 以下三条语句等价 
# 其实就是 ${variableName} 与 ${hivevar:variableName} 等价
hive > select ${selectField} from ${tableName};
hive > select ${selectField} from ${hivevar:tableName};
hive > select ${hivevar:selectField} from ${hivevar:tableName};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

シ風

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值