-1

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

谢谢, 马丹·莫汉 S

4

1 回答 1

0

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

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

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

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

于 2016-08-24T23:44:26.133 回答