无法理解配置单元中外部关键字的重要性

Unable to understand significance of external keyword in hive

我有几个疑问需要澄清:

  1. 如果我创建一个没有“外部”关键字的 table,但指定了“位置”,它是配置单元中的外部还是内部 table?
  2. 如果我使用带有 table 名称的“外部”关键字但未指定 'location',它将保存到默认存储的 hive/warehouse 位置。在这种情况下,它会是一个外部table吗?

总的来说,我想了解是什么使 table 成为外部的,关键字“外部”或指定 'location'。 任何帮助将不胜感激。

If I create a table without the "External" keyword, but specify "location", will it be an external or internal table in the hive?

它将被管理 table (EXTERNAL=False)。您可以使用 DESCRIBE FORMATTED tablename;

检查它

If I use the "external" keyword with a table name but do not specify the 'location', it will be saved to hive/warehouse location which is the default storage. In this case, will it be an external table?

是的,它将是外部 table。

what makes a table external, the keyword "External" or specifying the 'location'

只有 EXTERNAL 属性 / CREATE TABLE 中的关键字才能生成 EXTERNAL TABLE,而不是位置。 EXTERNAL table 属性 最初与位置无关。 EXTERNAL 或非 EXTERNAL(MANAGED) 定义 DROP TABLE 的行为方式:对于 EXTERNAL table DROP TABLE 不会删除 table 位置,只会删除 table 元数据.对于托管 table DROP TABLE 将删除它的位置以及所有数据文件和元数据。 features supported for managed and external tables

也有区别

在 Hive 的早期版本中,托管或外部 table 的位置没有限制,并且可以在 hive.metastore.warehouse.dir 之外创建 MANAGED table。如果未指定 LOCATION,hive 将对托管和外部 tables 使用 hive.metastore.warehouse.dir 的值。您可以在同一位置上同时创建托管和外部 table:.

另见 and