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

问题描述 投票:0回答:1

在维护已加载,托管或外部数据方面,哪一种更好(从性能和长期运行角度来看更好?

并且通过维护,我的意思是这些表每天都会频繁进行以下操作;

  1. 大多数情况下选择使用分区..但是对于某些分区,它们并未使用。
  2. 删除特定记录,而不是全部分区(例如,在某些列中发现问题,并想要删除并再次插入)。 -我不确定普通表是否支持此功能,除非使用事务性。
  3. 最重要,需要频繁合并文件。每天可能需要两次合并小文件以获得更少的映射器。我知道concate在托管上可用,并且在外部上插入覆盖。.哪一个成本更低?
hadoop hive hiveql hadoop2 hadoop-partitioning
1个回答
0
投票

取决于您的用例。例如,在多个应用程序中使用外部表时,建议使用外部表。在这种情况下,建议与蜂巢猪或其他应用程序一起使用,以处理数据。主要在读取数据时使用外部表。

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

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

根据您的情况,您经常对数据进行修改,因此,蜂巢最好完全控制数据。在此场景中,建议使用托管表。

除该托管表外,它比外部表更安全,因为任何人都可以访问外部表。在托管表中,您可以实现蜂巢级别的安全性,从而提供更好的控制,但是在外部情况下,您将必须实现HDFS级别的安全性。

您可以参考下面的链接,这些链接可以为您提供一些需要考虑的指标

External Vs Managed tables comparison

© www.soinside.com 2019 - 2024. All rights reserved.