Hive 创建表:内部表、修改、删除示例

本教程将展示 Hive 中表的操作,例如表的**创建、更改和删除**。

在下面的截图中,我们正在创建一个带有列的表并更改表名。

1. 创建表 guru_sample,包含两个列名:“empid”和“empname”

2. 显示 guru99 数据库中存在的表

3. Guru_sample 出现在表列表中

4. 将表“guru_sample”更改为“guru_sampleNew”

5. 再次执行“show”命令时,将显示新名称 Guru_sampleNew

Hive Create Table

Dropping table guru_sampleNew:

Hive Create Table

表类型及其用途

说到**表**,它的用法与我们在传统关系型数据库中创建表的方式相同。过滤、连接等功能都可以对表进行。

Hive 根据 Hive 中模式的加载和设计,处理两种表结构:**内部表和外部表**。

内部表

  • 内部表是紧密耦合的。在此类表中,我们首先需要创建表并加载数据。
  • 我们可以称之为**数据模式**。
  • 删除此表时,数据和模式都将被删除。
  • 此表的存储位置位于 /user/hive/warehouse。

何时选择内部表?

  • 如果处理的数据位于本地文件系统中
  • 如果我们希望 Hive 管理数据的完整生命周期,包括删除

内部表的示例代码片段

1. 创建内部表

 Hive>CREATE TABLE guruhive_internaltable (id INT,Name STRING);
	 Row format delimited 
	 Fields terminated by '\t';

2. 将数据加载到内部表中

    Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO table guruhive_internaltable;

3. 显示表的内容

    Hive>select * from guruhive_internaltable;

4. 删除内部表

    Hive>DROP TABLE guruhive_internaltable;

如果您删除了 guruhive_internaltable,Hive 将删除其元数据和数据。

从下面的屏幕截图中,我们可以观察到输出

Internal Tables

在上面的代码和屏幕截图中,我们执行以下操作:

  • 创建内部表
  • 将数据加载到内部表中
  • 显示表的内容
  • 删除内部表

外部表

  • 外部表是松散耦合的。数据将在 HDFS 中可用。表将在 HDFS 数据上创建。
  • 换句话说,我们可以说它是创建**数据模式**。
  • 删除表时,只会删除模式,数据将与之前一样保留在 HDFS 中。
  • 外部表提供了一个选项,可以为 HDFS 中存储的数据创建多个模式,而无需在每次模式更新时删除数据。

何时选择外部表?

  • 如果处理的数据位于 HDFS 中
  • 当文件在 Hive 外部使用时很有用

外部表的示例代码片段

1. 创建外部表

Hive>CREATE EXTERNAL TABLE guruhive_external(id INT,Name STRING)
	 Row format delimited
	 Fields terminated by '\t'
	 LOCATION '/user/guru99hive/guruhive_external;

2. 如果在创建表时未指定位置,我们可以手动加载数据

    Hive>LOAD DATA INPATH '/user/guru99hive/data.txt' INTO TABLE guruhive_external;

3. 显示表的内容

  Hive>select * from guruhive_external;

4. 删除内部表

  Hive>DROP TABLE guruhive_external;

从下面的屏幕截图中,我们可以观察到输出

External Tables

在上面的代码中,我们执行以下操作:

  • 创建外部表
  • 将数据加载到外部表中
  • 显示表的内容
  • 删除外部表

内部表与外部表之间的区别

特性 内置 外部
模式 数据模式 模式数据
存储位置 /usr/hive/warehouse HDFS 位置
数据可用性 在本地文件系统中 在 HDFS 中