历史数据和谐探索

HadoopHadoopBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

引言

在一座以充满活力的文化和丰富历史闻名的中世纪城市中,一位名叫阿拉里克(Alaric)的流浪吟游诗人被这片土地上的故事和歌曲深深吸引。当他漫步在街头,弹奏着他的鲁特琴时,他意识到这座城市的档案急需整理。无数的羊皮纸和卷轴散落各处,上面记载着过去的故事和记录,但整理和管理这些资料的任务似乎令人望而生畏。

阿拉里克的目标是创建一个和谐的系统,使这座城市的历史记录能够被轻松保存和访问。凭借他对讲故事的热爱和对组织工作的敏锐眼光,他踏上了一段旅程,试图利用Hadoop Hive的力量,这个工具将帮助他高效地管理和处理海量的数据。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("`Hadoop`")) -.-> hadoop/HadoopHDFSGroup(["`Hadoop HDFS`"]) hadoop(("`Hadoop`")) -.-> hadoop/HadoopHiveGroup(["`Hadoop Hive`"]) hadoop/HadoopHDFSGroup -.-> hadoop/fs_cat("`FS Shell cat`") hadoop/HadoopHDFSGroup -.-> hadoop/fs_ls("`FS Shell ls`") hadoop/HadoopHiveGroup -.-> hadoop/hive_setup("`Hive Setup`") hadoop/HadoopHiveGroup -.-> hadoop/manage_db("`Managing Database`") hadoop/HadoopHiveGroup -.-> hadoop/create_tables("`Creating Tables`") hadoop/HadoopHiveGroup -.-> hadoop/delete_truncate_data("`Deleting and Truncating Data`") hadoop/HadoopHiveGroup -.-> hadoop/where("`where Usage`") subgraph Lab Skills hadoop/fs_cat -.-> lab-288965{{"`历史数据和谐探索`"}} hadoop/fs_ls -.-> lab-288965{{"`历史数据和谐探索`"}} hadoop/hive_setup -.-> lab-288965{{"`历史数据和谐探索`"}} hadoop/manage_db -.-> lab-288965{{"`历史数据和谐探索`"}} hadoop/create_tables -.-> lab-288965{{"`历史数据和谐探索`"}} hadoop/delete_truncate_data -.-> lab-288965{{"`历史数据和谐探索`"}} hadoop/where -.-> lab-288965{{"`历史数据和谐探索`"}} end

探索城市档案

在这一步中,我们将深入探索城市的档案,那里散落着无数的羊皮纸和卷轴,等待着被整理。我们的目标是熟悉现有的数据,并理解管理如此庞大收藏所面临的挑战。

首先,确保你以 hadoop 用户身份登录,通过在终端中运行以下命令:

su - hadoop

在这里,你会发现一系列文件,其中包含来自城市过去的各种记录和故事。为了了解可用数据的概况,运行以下命令:

hdfs dfs -ls /home/hadoop/archives

该命令将列出 Hadoop 分布式文件系统(HDFS)中 /home/hadoop/archives 目录下的文件和目录。

接下来,让我们探索其中一个文件的内容。我们将使用 hdfs dfs -cat 命令查看文件内容:

hdfs dfs -cat /home/hadoop/archives/chronicles/chapter_1.txt

该命令将显示位于 chronicles 子目录中的 chapter_1.txt 文件的内容。

当你浏览这些文件时,你会注意到其中一些包含不相关或过时的信息,需要被删除或截断。这正是 Hadoop Hive 发挥作用的地方,它使我们能够高效地管理和操作这些数据。

设置 Hive 并探索数据

在这一步中,我们将设置 Hive,这是一个基于 Hadoop 构建的强大数据仓库系统,并探索我们档案中的现有数据。

首先,我们打开 Hive CLI:

hive

进入 Hive CLI 后,我们可以创建一个新的数据库来存储我们的城市档案:

CREATE DATABASE city_archives;

现在,切换到新创建的数据库:

USE city_archives;

为了探索现有数据,我们将创建一个新表并从 HDFS 的档案目录加载数据:

CREATE EXTERNAL TABLE tmp_chronicles (
  chapter STRING,
  content STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LOCATION '/home/hadoop/archives/chronicles';

这段代码将创建一个名为 tmp_chronicles 的外部表,包含两列:chaptercontent。表的数据将从 HDFS 上的 /home/hadoop/archives/chronicles 目录加载,字段以制表符分隔。

CREATE TABLE chronicles (
  chapter STRING,
  content STRING
)
STORED AS ORC
TBLPROPERTIES ('transactional'='true');

这段代码将创建一个名为 chronicles 的表,包含两列:chaptercontentSTORED AS ORC 子句指定数据将以 ORC 文件格式存储。TBLPROPERTIES 子句指定该表是事务性的,意味着它支持 ACID 事务。

INSERT INTO TABLE chronicles SELECT * FROM tmp_chronicles;

这段代码将把临时表 tmp_chronicles 中的所有数据插入到 chronicles 表中。

现在,我们可以查询 chronicles 表以查看其内容:

SELECT * FROM chronicles LIMIT 5;

该命令将显示 chronicles 表的前 5 行,让我们初步了解我们将要处理的数据。

删除和清空数据

在这一步中,我们将学习如何从 Hive 表中删除和清空数据,从而高效地管理和维护城市档案。

有时,我们可能需要从表中删除过时或不相关的数据。在 Hive 中,我们可以使用 DELETE 语句删除符合特定条件的行。

例如,假设我们想从 chronicles 表中删除所有包含单词 "outdated" 的章节:

DELETE FROM chronicles WHERE content LIKE '%outdated%';

该命令将从 chronicles 表中删除所有 content 列包含单词 "outdated" 的行。

然而,如果我们想清空表中的所有数据,可以使用 TRUNCATE 语句,而不是逐行删除。这种操作比逐行删除更高效、更快速。

TRUNCATE TABLE chronicles;

该命令将清空 chronicles 表中的所有数据,使其变为空表。

通过掌握这些删除和清空技术,我们可以维护城市档案的完整性和相关性,确保只保留最有价值和最新的信息。

总结

在本实验中,我们踏上了一段使用 Hadoop Hive 整理和维护城市档案的旅程。通过流浪吟游诗人阿拉里克的视角,我们探索了管理大量历史记录的挑战,并学习了如何利用 Hive 的力量高效地删除和清空数据。

通过深入档案目录并设置 Hive,我们获得了创建数据库、表以及将数据加载到 Hive 中的实践经验。随后,我们掌握了删除特定行和清空整个表的技巧,使我们能够从城市档案中移除过时或不相关的信息。

在整个实验中,我们不仅掌握了数据管理的实用技能,还发现了将讲故事与技术结合的美妙之处。阿拉里克保护城市丰富文化遗产的追求提醒我们,数据不仅仅是数字和图表;它是一幅等待编织和分享的故事挂毯。

您可能感兴趣的其他 Hadoop 教程