步骤1.我创建一个配置单元外部表“test”,并给出一些位置,例如“/ user / hive2”。
第2步。我在“测试”表中加载文件。
步骤3.我从测试中选择*。我得到我的记录。
步骤4.通过拖放表测试来删除该表。
步骤5.我从测试中选择*并找到未找到的表。

那么使用外部表有什么意义呢?如果删除了“测试”表的元数据,并且我无法对其查询,那么为什么要使用外部表?

最佳答案

@Nishant:在此论坛中问通用问题之前,您应该做一些功课。无论如何,这是一个快速链接,可用于总体上对配置单元外部表进行详细说明-External Hive Tables

删除内部表时,它会删除数据,并且还会删除元数据。您将不再有权访问数据

当您删除外部表时,它仅删除元数据。这意味着 hive 现在不知道这些数据。它不会触摸数据本身。现在,您可以访问数据并执行任何操作(如果需要)。当您需要进站数据并随后将整个数据转储到托管表以进行配置单元操作时,也最好使用外部表

另外,这是另一个stackoverflow线程的注释

在以下情况下使用EXTERNAL表:

  • 该数据还在Hive之外使用。例如,数据文件由不锁定文件的现有程序读取和处理。
  • 即使在放置DROP TABLE之后,数据也需要保留在底层位置。如果您将多个模式(表或 View )指向一个数据集,或者正在遍历各种可能的模式,则可以应用此方法。
  • 您要使用自定义位置,例如ASV。
  • Hive不应拥有数据和控件设置,目录等,因为您有另一个程序或进程可以执行这些操作。
  • 您不是基于现有表(AS SELECT)创建表。

  • 在以下情况下使用INTERNAL表:
  • 数据是临时的。
  • 您希望Hive完全管理表和数据的生命周期。

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

    希望这会有所帮助。

    关于hadoop - 配置单元外部表的意义是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34073762/

    10-16 03:30