Hive 创建表:内部表、修改、删除示例
本教程将展示 Hive 中表的操作,例如表的**创建、更改和删除**。
在下面的截图中,我们正在创建一个带有列的表并更改表名。
1. 创建表 guru_sample,包含两个列名:“empid”和“empname”
2. 显示 guru99 数据库中存在的表
3. Guru_sample 出现在表列表中
4. 将表“guru_sample”更改为“guru_sampleNew”
5. 再次执行“show”命令时,将显示新名称 Guru_sampleNew
Dropping table guru_sampleNew:
表类型及其用途
说到**表**,它的用法与我们在传统关系型数据库中创建表的方式相同。过滤、连接等功能都可以对表进行。
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 将删除其元数据和数据。
从下面的屏幕截图中,我们可以观察到输出
在上面的代码和屏幕截图中,我们执行以下操作:
- 创建内部表
- 将数据加载到内部表中
- 显示表的内容
- 删除内部表
外部表
- 外部表是松散耦合的。数据将在 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;
从下面的屏幕截图中,我们可以观察到输出
在上面的代码中,我们执行以下操作:
- 创建外部表
- 将数据加载到外部表中
- 显示表的内容
- 删除外部表
内部表与外部表之间的区别
特性 | 内置 | 外部 |
---|---|---|
模式 | 数据模式 | 模式数据 |
存储位置 | /usr/hive/warehouse | HDFS 位置 |
数据可用性 | 在本地文件系统中 | 在 HDFS 中 |