【问题标题】:Copying data from External table to database将数据从外部表复制到数据库
【发布时间】:2016-08-16 06:42:11
【问题描述】:

我在外部表中有数据。现在我将数据从外部表复制到数据库中新创建的表中。什么样的表将是数据库中的表?它是托管表还是外部表?我需要你的帮助来理解这个问题背后的概念

谢谢, 马丹·莫汉 S

【问题讨论】:

  • 不清楚你问了什么。
  • 我在 hive 中有一个名为“db1”的数据库,它由名为 emp3 的表组成,我们有一个名为employees 的外部表。如果我将数据从员工复制到 emp3(两者具有相同的架构),我的 emp3 将是 hive 中的托管表或外部表?

标签: hive external-tables


【解决方案1】:

hive 表在创建时获取其类型“托管”或“外部”,而不是在插入数据时。

所以表 employees 是外部的(因为它是在 DDL 中使用“create External”创建的,并提供了数据文件的位置。
emp 是托管表,因为 DDL 中没有使用“外部”,也不需要数据位置。

现在的不同之处在于,如果表 employees 删除了它正在读取的在“位置”中提供的数据,则不会被删除。因此,当多个工具(例如猪)读取数据时,外部表很有用。如果 pig 脚本正在读取相同的位置,即使删除了 employees 表,它仍然可以运行。

但是 emp 是管理的(换句话说,元数据和数据都由 hive 管理)所以当 emp 被删除时,数据也会被删除。因此,在删除它后,如果您检查配置单元仓库目录,您将不再找到“emp”hdfs 目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2010-09-08
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多