为了账号安全,请及时绑定邮箱和手机立即绑定

Hive内部表和外部表之间的区别?

Hive内部表和外部表之间的区别?

慕莱坞森 2019-12-09 14:12:21
谁能告诉我Hive的外部表和内部表之间的区别。我知道放桌子时会有不同。我不明白您的意思是数据和元数据在内部被删除,仅元数据在外部表中被删除。谁能解释我的节点。
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

配置单元表可以创建为EXTERNAL或INTERNAL。这是一个影响数据加载,控制和管理方式的选择。

在以下情况下使用EXTERNAL表:

  1. 该数据还用于Hive之外。例如,数据文件由不锁定文件的现有程序读取和处理。

  2. 即使在放置DROP TABLE之后,数据也需要保留在底层位置。如果您将多个模式(表或视图)指向一个数据集,或者正在遍历各种可能的模式,则可以应用此方法。

  3. 您要使用自定义位置,例如ASV。

  4. Hive不应拥有数据和控件设置,目录等,您可以使用其他程序或进程来执行这些操作。

  5. 您不是基于现有表(AS SELECT)创建表。

在以下情况下使用INTERNAL表:

数据是临时的。

您希望Hive完全管理表和数据的生命周期。


查看完整回答
反对 回复 2019-12-09
?
千巷猫影

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完全管理表和数据的生命周期


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 909 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信