Hive 托管与外部表的可维护性

Hive Managed vs External tables maintainability

在维护加载数据、托管数据或外部数据方面,哪一个更好(性能方面和长期操作 运行)?

而所谓维护,是指这些表每天都会频繁地进行以下操作;

  1. Select 大部分时间使用分区.. 但其中一些不使用。
  2. 删除特定记录,不删除所有分区(例如发现某些列有问题,想删除并重新插入)。 - 我不确定这是否支持普通表,除非使用事务。
  3. 最重要,需要经常合并文件..可能一天两次合并小文件以获得较少的映射器。我知道 concate 在托管上可用,在外部插入覆盖.. 哪个成本更低?

这取决于您的用例。例如,当它们跨多个应用程序使用时,建议使用外部 table 以及 hive pig 或其他应用程序也用于处理此类场景中的数据外部 table 主要是 recommended.They主要用于读取数据时使用。

而在托管 table 的情况下,蜂巢可以完全控制数据。尽管您可以将任何外部 table 转换为托管,反之亦然

alter table table_name SET TBLPROPERTIES('EXTERNAL'='TRUE');

在您的情况下,您经常修改数据,因此 Hive 最好完全控制数据。在这种情况下,建议使用 Managed tables.

除此之外,托管 table 比外部 table 更安全,因为任何人都可以访问外部 table。在托管 table 中,您可以实施 Hive 级别的安全性,从而提供更好的控制,但在外部情况下,您将必须实施 HDFS 级别的安全性。

您可以参考以下链接,这些链接可以为您提供一些注意事项

External Vs Managed tables comparison