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};
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
1月前
|
测试技术 Linux
VPS一键测试脚本,无痕体验+自动导出,服务器测试更轻松
NodeQuality 是一款整合 Yabs、IPQuality、NetQuality 等主流 VPS 测试脚本的全能工具,支持一键测试硬件性能、IP属性、网络质量,并新增分享与导出功能。其“无痕测试”设计不安装依赖、不留残留,兼容性强;测试结果自动排版、截图并生成分享链接,极大提升效率。适合需要全面、快速、干净测试 VPS 的用户,是运维和测评的高效利器。
122 3
|
1月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
55 4
|
1月前
|
存储 测试技术 API
数据驱动开发软件测试脚本
今天刚提交了我的新作《带着ChatGPT玩转软件开发》给出版社,在写作期间跟着ChatGPT学到许多新知识。下面分享数据驱动开发软件测试脚本。
37 0
|
3月前
|
Web App开发 JavaScript 测试技术
Playwright 极速入门:1 小时搞定环境搭建与首个测试脚本
本文带你1小时快速入门Playwright,完成环境搭建并编写首个测试脚本。Playwright是微软推出的现代化Web自动化测试工具,支持Chromium、Firefox和WebKit三大浏览器引擎,具备跨平台、多语言(Python/JS/Java/C#)特性。其核心优势包括:智能自动等待机制减少失败率、内置录制工具实时生成脚本、多语言灵活选择,以及真移动端设备模拟能力,显著提升测试效率和可靠性。
|
8月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
6月前
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
97 0
|
9月前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
237 35
|
9月前
|
前端开发 JavaScript Java
通过ChatGPT生成测试用例和测试脚本(2)
通过ChatGPT生成测试用例和测试脚本
218 21
|
11月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
430 59
|
10月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
278 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验