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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【4月更文挑战第7天】Hive【基础知识 02-2】【Hive CLI 命令行工具使用】【详细举例-包含测试脚本文件】

准备

准备阶段要创建数据库、创建表、导入数据,内容较多所有单独写了一篇《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 和 --hivevar 在功能上是等价的,都是用来实现自定义变量,这里给出一个示例:

# 定义变量:
[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};
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
44 1
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
Hadoop-13-Hive 启动Hive 修改启动参数命令行启动测试 几句简单的HQL了解Hive
72 2
|
12天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
46 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
存储 监控 测试技术
测试脚本编写和维护的最佳实践有哪些?
测试脚本编写和维护的最佳实践有哪些?
119 50
|
2月前
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
194 56
|
1月前
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。
|
1月前
|
存储 监控 前端开发
如何确保测试脚本的稳定性和可靠性?
确保测试脚本的稳定性和可靠性是保证性能测试结果准确有效的关键
|
1月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
1月前
|
测试技术 数据库连接 数据库
测试脚本的编写和维护对性能测试结果有何影响?
测试脚本的编写和维护对性能测试结果有着至关重要的影响,
29 1
|
1月前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
41 1