介绍
在一个数据至上的未来世界,一场盛大的锦标赛正在举行,以决出数据操作的终极大师。来自银河系各个角落的参赛者齐聚一堂,展示他们在数据整理艺术上的技能,而最艰巨的挑战则隐藏在 Hadoop Hive Shell 的领域中。
你,一位前途无量的数据工程师,被选中代表你的母星参加这场盛事。当你踏入竞技场时,锦标赛的首席裁判以威严的姿态迎接你:“欢迎你,挑战者!在这场决定性的战斗中,你必须征服 Hive Shell 的深处,这是一个强大的工具,允许你与 Hadoop 的数据仓库系统进行交互。通过执行一系列任务来证明你的实力,这些任务将测试你在数据查询、操作和分析方面的熟练程度。”
你坚定地点了点头,准备好迎接即将到来的挑战,渴望展示你的技能,为你的星球赢得荣誉。
访问 Hive Shell
在这一步中,你将学习如何访问 Hive Shell,这是一个命令行界面,允许你与 Hive 数据仓库系统进行交互。
要访问 Hive Shell,请按照以下步骤操作:
- 打开一个终端窗口。
- 通过执行以下命令切换到
hadoop用户:
su - hadoop
- 进入
hadoop用户环境后,运行以下命令启动 Hive Shell:
hive
你应该会看到 Hive Shell 提示符(hive>),这表明你已成功进入 Hive Shell。
以下是你在终端中应该看到的内容示例:
[hadoop@localhost ~]$ hive
Hive Session ID = 2bd4d0ce-9a9a-4c4e-a8f4-c5a6c7b9a8b9
Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j2.properties Async: true
Hive Session Value Manager Service
hive>
现在,你已准备好在 Hive Shell 中执行 Hive 查询和命令。
创建数据库和表
在这一步中,你将学习如何在 Hive Shell 中创建一个新的数据库和表。
- 首先,在 Hive Shell 中执行以下命令,创建一个名为
tournament_db的新数据库:
CREATE DATABASE tournament_db;
- 接下来,切换到新创建的数据库:
USE tournament_db;
- 创建一个名为
contestants的新表,其模式如下:
CREATE TABLE contestants (
id INT,
name STRING,
planet STRING,
score INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
该表将存储有关锦标赛参赛者的信息,包括他们的 ID、姓名、母星和分数。
- 要验证表是否成功创建,可以运行以下命令来描述表的结构:
DESCRIBE contestants;
你应该会在 Hive Shell 的输出中看到表的结构。
以下是你应该看到的内容示例:
hive> DESCRIBE contestants;
OK
id int None
name string None
planet string None
score int None
将数据加载到表中
现在你已经创建了 contestants 表,接下来需要将数据填充到表中。
- 在
/home/hadoop/目录下创建一个名为contestants.csv的新文件,内容如下:
1,Zara,Andromeda,85
2,Brock,Celestia,92
3,Kira,Nebula,78
4,Tara,Vega,96
5,Zion,Altair,83
- 接下来,切换到新创建的数据库:
USE tournament_db;
- 在 Hive Shell 中使用以下命令将
contestants.csv文件中的数据加载到contestants表中:
LOAD DATA LOCAL INPATH '/home/hadoop/contestants.csv' OVERWRITE INTO TABLE contestants;
该命令会将本地文件 contestants.csv 中的数据加载到 contestants 表中,并覆盖任何现有数据。
- 要验证数据是否正确加载,可以运行一个
SELECT查询:
SELECT * FROM contestants;
你应该会看到以下输出:
hive> SELECT * FROM contestants;
OK
1 Zara Andromeda 85
2 Brock Celestia 92
3 Kira Nebula 78
4 Tara Vega 96
5 Zion Altair 83
查询数据
现在数据已经加载到 contestants 表中,你可以执行各种查询来分析和操作数据。
- 要显示来自星球 'Andromeda' 的所有参赛者的姓名和分数,请运行以下查询:
SELECT name, score FROM contestants WHERE planet = 'Andromeda';
你应该会看到以下输出:
hive> SELECT name, score FROM contestants WHERE planet = 'Andromeda';
OK
Zara 85
- 要计算所有参赛者的平均分数,请运行以下查询:
SELECT AVG(score) AS average_score FROM contestants;
你应该会看到以下输出:
hive> SELECT AVG(score) AS average_score FROM contestants;
OK
86.8
- 要找到分数最高的参赛者,请运行以下查询:
SELECT name, MAX(score) AS highest_score FROM contestants GROUP BY name;
你应该会看到以下输出:
hive> SELECT name, MAX(score) AS highest_score FROM contestants GROUP BY name;
OK
Brock 92
Kira 78
Tara 96
Zara 85
Zion 83
你可以随意尝试更多查询,并使用 Hive 提供的各种子句和函数来探索 contestants 表中的数据。
总结
在本实验中,你踏入了 Hadoop Hive Shell 的世界,这是一个用于数据操作和分析的强大工具。通过一系列沉浸式挑战,你掌握了访问 Hive Shell、创建数据库和表、加载数据以及使用各种子句和函数查询数据的技能。
实验的设计灵感来源于一场未来锦标赛,旨在创造一个引人入胜且激励人心的学习体验。通过扮演代表你母星的参赛者角色,你被激励在每个挑战中表现出色,磨练技能并展示你在数据处理方面的能力。
在整个实验中,你遇到了需要执行命令、编写查询和分析结果的实际任务。逐步的说明,辅以代码示例和详细解释,确保了平滑的学习曲线,使你能够逐步构建知识和信心。
每个步骤末尾包含的检查脚本为你提供了自我评估的机会,使你能够验证自己的理解并确保成功完成任务。这些检查器在巩固你的学习并确保你走在正确的轨道上发挥了关键作用。
总的来说,本实验不仅为你提供了使用 Hadoop Hive Shell 所需的基本技能,还以一种引人入胜且沉浸式的方式培养了对数据操作和分析力量的欣赏。



