hadoop - hive外部表有什么意义?

标签 hadoop mapreduce hive

第 1 步。我创建了一个配置单元外部表“test”,并给出了一些位置,例如“/user/hive2”。
第 2 步。我在“测试”表中加载一个文件。
第 3 步。我做了一个 select * from test。我得到了我的记录。
第四步,我通过drop table test来drop table。
第 5 步。我确实从测试中选择 *,但未找到表。

那么使用external table有什么意义呢?如果删除了“测试”表的元数据并且我无法在其上查询任何内容,那么我们为什么要使用外部表?

最佳答案

@Nishant:在本论坛中提出一般性问题之前,您应该做一些功课。无论如何,这里有一个快速链接,用于详细说明一般的配置单元外部表 - External Hive Tables

当您删除内部表时,它会删除数据,同时也会删除元数据。您将无法再访问数据

当您删除外部表时,它只会删除元数据。这意味着 hive 现在不知道该数据。它不触及数据本身。您现在可以访问数据并执行任何操作(如果需要)。当您需要为数据进站然后将整个数据转储到托管表中以进行配置单元操作时,外部表也是首选

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

在以下情况下使用外部表:

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

在以下情况下使用内部表:

  1. 数据是临时的。
  2. 您希望 Hive 完全管理表和数据的生命周期。

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

希望对您有所帮助。

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

相关文章:

hadoop - 在 Hive 中连接多个表

sql - Hive 将字符串转换为浮点十进制

hadoop - HBase MapReduce交互

java - MapReduce - reducer 不组合键

hadoop - 如何一次将多个文件发送到单个映射器

Java-Stream-API : Map Reduce

r - 使用 R 的非常慢/卡住的 hadoop 流式传输

hadoop - 需要帮助使用flume调试kafka源到hdfs sink

java - 输出文件包含 Mapper Output 而不是 Reducer 输出

hadoop - pig 脚本中的代理键