使用 Hadoop 探索火星数据

HadoopHadoopBeginner
立即练习

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

介绍

在2150年,地球资源已经枯竭,人类在火星上建立了一个繁荣的大都市,名为Martropolis。作为一名环境保护官员,你的使命是通过分析和优化资源利用,确保这座未来城市的可持续发展。你的主要职责之一是利用Hadoop和Hive的强大功能来处理和分析大量的环境数据,这些数据将指导你的决策过程。

你的目标是探索Hive数据库,研究其结构,并深入了解其中包含的数据。通过掌握描述Hive表的技巧,你将揭开隐藏在数据中的秘密,从而做出明智的决策,塑造Martropolis的未来,并保护其脆弱的生态系统。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHiveGroup -.-> hadoop/hive_setup("Hive Setup") hadoop/HadoopHiveGroup -.-> hadoop/hive_shell("Hive Shell") hadoop/HadoopHiveGroup -.-> hadoop/manage_db("Managing Database") hadoop/HadoopHiveGroup -.-> hadoop/describe_tables("Describing Tables") hadoop/HadoopHiveGroup -.-> hadoop/basic_hiveql("Basic HiveQL Queries") hadoop/HadoopHiveGroup -.-> hadoop/storage_formats("Choosing Storage Formats") hadoop/HadoopHiveGroup -.-> hadoop/partitions_buckets("Implementing Partitions and Buckets") hadoop/HadoopHiveGroup -.-> hadoop/schema_design("Schema Design") subgraph Lab Skills hadoop/hive_setup -.-> lab-288966{{"使用 Hadoop 探索火星数据"}} hadoop/hive_shell -.-> lab-288966{{"使用 Hadoop 探索火星数据"}} hadoop/manage_db -.-> lab-288966{{"使用 Hadoop 探索火星数据"}} hadoop/describe_tables -.-> lab-288966{{"使用 Hadoop 探索火星数据"}} hadoop/basic_hiveql -.-> lab-288966{{"使用 Hadoop 探索火星数据"}} hadoop/storage_formats -.-> lab-288966{{"使用 Hadoop 探索火星数据"}} hadoop/partitions_buckets -.-> lab-288966{{"使用 Hadoop 探索火星数据"}} hadoop/schema_design -.-> lab-288966{{"使用 Hadoop 探索火星数据"}} end

连接到 Hive 并列出可用数据库

在这一步中,你将学习如何连接到 Hive 环境并列出可用的数据库。

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

su - hadoop

接下来,通过执行以下命令启动 Hive shell:

hive

进入 Hive shell 后,你可以使用 SHOW DATABASES 命令列出所有可用的数据库。

SHOW DATABASES;

该命令将显示数据库列表,包括默认数据库。
示例输出:

hive> SHOW DATABASES;
OK
default
martropolis
Time taken: 0.528 seconds, Fetched: 2 row(s)

切换到 'martropolis' 数据库

在这一步中,你将切换到 martropolis 数据库,该数据库包含与你的任务相关的表。

USE martropolis;

执行此命令后,你将在 martropolis 数据库中工作。

提示:martropolis 已由系统自动创建,作为本实验的示例数据库。

列出 'martropolis' 数据库中的表

现在你已经进入 martropolis 数据库,可以使用 SHOW TABLES 命令列出其中包含的所有表。

SHOW TABLES;

该命令将显示 martropolis 数据库中可用的表列表。
示例输出:

hive> SHOW TABLES;
OK
sensor_data
Time taken: 0.028 seconds, Fetched: 1 row(s)

描述表的结构

要了解表的结构,你可以使用 DESCRIBE 命令,后跟表名。

DESCRIBE sensor_data;

该命令将提供有关表列的详细信息,包括列名、数据类型以及任何其他元数据。
示例输出:

hive> DESCRIBE sensor_data;
OK
sensor_id               int
sensor_name             string
reading                 double
dt                      string

## Partition Information
## col_name              data_type               comment
dt                      string
Time taken: 0.154 seconds, Fetched: 8 row(s)

探索表属性

除了表结构之外,你还可以使用 DESCRIBE EXTENDED 命令探索表的属性。

DESCRIBE EXTENDED sensor_data;

该命令将提供有关表的更详细信息,包括其属性,例如表类型、输入和输出格式、位置以及其他相关元数据。
示例输出:

hive> DESCRIBE EXTENDED sensor_data;
OK
sensor_id               int
sensor_name             string
reading                 double
dt                      string

## Partition Information
## col_name              data_type               comment
dt                      string

Detailed Table Information      Table(tableName:sensor_data, dbName:martropolis, owner:hadoop, createTime:1711106250, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:sensor_id, type:int, comment:null), FieldSchema(name:sensor_name, type:string, comment:null), FieldSchema(name:reading, type:double, comment:null), FieldSchema(name:dt, type:string, comment:null)], location:hdfs://localhost:9000/user/hive/warehouse/martropolis.db/sensor_data, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[FieldSchema(name:dt, type:string, comment:null)], parameters:{totalSize=49, numRows=2, rawDataSize=47, COLUMN_STATS_ACCURATE={\"BASIC_STATS\":\"true\"}, numFiles=1, numPartitions=1, transient_lastDdlTime=1711106250, bucketing_version=2}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE, rewriteEnabled:false, catName:hive, ownerType:USER)
Time taken: 0.367 seconds, Fetched: 10 row(s)

分析表分区(可选)

如果你的表是分区的,可以使用 SHOW PARTITIONS 命令查看特定表的分区。

SHOW PARTITIONS sensor_data;

该命令将显示指定表的分区列表及其对应的分区值。
示例输出:

hive> SHOW PARTITIONS sensor_data;
OK
dt=2023-05-01
Time taken: 0.099 seconds, Fetched: 1 row(s)

总结

在本实验中,你学习了如何导航 Hive 环境、切换数据库、列出表以及描述表的结构和属性。通过掌握这些基本技能,你已经迈出了解锁 Martropolis 环境数据中隐藏的宝贵洞察的第一步。

通过动手实践,你深入了解了 SHOW DATABASESUSESHOW TABLESDESCRIBEDESCRIBE EXTENDEDSHOW PARTITIONS 命令。这些命令是探索和理解 Hive 中数据组织的重要工具,使你能够做出明智的决策,从而塑造 Martropolis 的未来并保护其脆弱的生态系统。