3 回答
TA贡献1859条经验 获得超6个赞
配置单元表可以创建为EXTERNAL或INTERNAL。这是一个影响数据加载,控制和管理方式的选择。
在以下情况下使用EXTERNAL表:
该数据还用于Hive之外。例如,数据文件由不锁定文件的现有程序读取和处理。
即使在放置DROP TABLE之后,数据也需要保留在底层位置。如果您将多个模式(表或视图)指向一个数据集,或者正在遍历各种可能的模式,则可以应用此方法。
您要使用自定义位置,例如ASV。
Hive不应拥有数据和控件设置,目录等,您可以使用其他程序或进程来执行这些操作。
您不是基于现有表(AS SELECT)创建表。
在以下情况下使用INTERNAL表:
数据是临时的。
您希望Hive完全管理表和数据的生命周期。
TA贡献1829条经验 获得超7个赞
回答您的问题:
对于外部表,Hive不会将数据移动到其仓库目录中。如果删除了外部表,那么将删除表元数据,但不会删除数据。
对于内部表,Hive将数据移动到其仓库目录中。如果删除了表,则表元数据和数据将被删除。
供你参考,
内部和外部表之间的区别:
对于外部表-
外部表将文件存储在HDFS服务器上,但表未完全链接到源文件。
如果删除外部表,该文件仍保留在HDFS服务器上。
例如,如果您使用HIVE-QL在HIVE中创建一个名为“ table_test”的外部表并将该表链接到文件“ file”,则从HIVE中删除“ table_test”不会从HDFS中删除“ file”。
有权访问HDFS文件结构的任何人都可以访问外部表文件,因此需要在HDFS文件/文件夹级别管理安全性。
元数据保留在主节点上,从HIVE中删除外部表只会删除元数据,而不会删除数据/文件。
对于内部表-
根据设置存储在目录中
hive.metastore.warehouse.dir
, 默认情况下,内部表存储在以下目录“ / user / hive / warehouse”中,您可以通过更新配置文件中的位置来进行更改。删除表将分别从主节点和HDFS中删除元数据和数据。
内部表文件安全性仅通过HIVE控制。安全需要在HIVE内部进行管理,可能需要在架构级别(取决于组织)进行管理。
Hive可能具有内部或外部表,这是一个会影响数据加载,控制和管理方式的选择。
在以下情况下使用EXTERNAL表:
该数据还用于Hive之外。例如,数据文件由不锁定文件的现有程序读取和处理。
即使在放置DROP TABLE之后,数据也需要保留在底层位置。如果您将多个模式(表或视图)指向单个数据集,或者正在遍历各种可能的模式,则可以应用此方法。
Hive不应拥有数据和控件设置,目录等,否则您可能会有另一个程序或进程来执行这些操作。
您不是基于现有表(AS SELECT)创建表。
在以下情况下使用INTERNAL表:
该数据是暂时的。
您希望Hive完全管理表和数据的生命周期。
- 3 回答
- 0 关注
- 964 浏览
添加回答
举报