作者:mobiledu2502913173 | 来源:互联网 | 2024-12-27 20:21
本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。
Hive中的内部表与外部表及其HDFS路径
1. 内部表与外部表的区别
Hive支持两种类型的表:内部表(Managed Table)和外部表(External Table)。创建内部表时,Hive会将数据移动到指定的数据仓库路径;而创建外部表时,Hive仅记录数据的存储位置,不会移动数据。因此,在删除表时,内部表的数据和元数据会被一起删除,而外部表仅删除元数据,数据保持不变。外部表更适合用于共享数据源或需要保留原始数据的场景。
内部表
创建内部表:
CREATE TABLE test1(a STRING, b STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/input/table_data';
2. 加载数据到内部表:
LOAD DATA INPATH '/input/data' INTO TABLE test1;
这会将HDFS路径/input/data下的数据文件转移到/input/table_data。如果删除test1表,则该表的数据和元数据都会被删除,/input/table_data和/input/data目录下均无数据。
外部表
1. 创建外部表:
CREATE EXTERNAL TABLE etable(name STRING, age STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/input/etable_data';
2. 加载数据到外部表:
LOAD DATA INPATH '/input/edata' INTO TABLE etable;
此时,HDFS路径/input/edata下的数据会被转移到/input/etable_data。若删除外部表,/input/etable_data下的数据不会被删除。
2. 查看Hive表的详细信息
可以通过以下命令输出创建表或视图的语句:
SHOW CREATE TABLE etable;
这将显示创建外部表etable的完整SQL语句,包括字段定义、分隔符、存储格式等信息。
查看表结构:
DESC FORMATTED etable;
此命令会返回表的详细信息,包括字段名、数据类型、注释、数据库名称、所有者、创建时间、存储位置、表类型等。