如何在蜂巢中使用外部表?

时间:2018-04-26 16:45:27

标签: hadoop hive

任何人都可以解释为什么以及在hive中使用外部表的位置?

请解释一个易于理解的场景。

3 个答案:

答案 0 :(得分:0)

当hive表指向的基础数据集被多个目的共享时,我们使用外部表,即地图缩减作业,猪等,并且当hive表指向的数据集仅由hive应用程序使用时,在hive中使用托管表。

实际上,hive托管表对数据集具有完全控制权,即在托管表中如果删除表数据集,也将从HDFS中存在的hive仓库(/ usr / hive / warehouse)中删除,但是在外部表的情况下如果删除该表,则不会从HDFS中的hive仓库中删除数据集。

假设您现在拥有50 gb数据集的示例如果您为不同目的创建多个数据集副本,它将只占用更多空间,因此更好的选择是使用外部表,以便在删除表数据集时不会删除并且您可以通过任何其他应用程序(例如猪或任何其他目的)进一步使用它。

答案 1 :(得分:0)

根据经验:如果您打算不仅使用来自Hive但来自其他框架的数据,请使用外部表。否则将其内部化。

答案 2 :(得分:0)

Hive中的外部表和托管表之间的唯一区别是Drop tableDrop partition行为。对于Managed,它也会丢弃数据,对于External表,数据在表/分区位置保持不变。

在大多数情况下使用外部。外部表允许您轻松更改表定义。您还可以在同一位置创建几个表。 如果表是临时/中间的,则使用托管表,并且应删除数据以释放空间。

可以使用

将托管表转换为外部表,反之亦然
alter table table_name SET TBLPROPERTIES('EXTERNAL'='TRUE');