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

s4chpxco  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(307)

在维护加载的、管理的或外部的数据方面,哪一个更好(从性能和操作Angular 来看)?
通过维护,我的意思是这些表将每天频繁地进行以下操作;
大多数时候选择使用分区。。但在某些情况下,它们并没有被使用。
删除特定的记录,而不是所有的分区(例如,在某些列中发现问题,希望删除并再次插入)我不确定这是否支持普通表,除非使用事务性。
最重要的是,需要经常合并文件。。可能是一天两次合并小文件,以获得较少的Map。我知道concate在managed上可用,而insert overwrite在external上可用。。哪个比较便宜?

vm0i2vca

vm0i2vca1#

这取决于你的用例。当在多个应用程序中使用外部表时,建议使用外部表,例如与hive pig一起使用,或其他应用程序也用于处理此类场景中的数据。主要建议使用外部表。当您主要读取数据时,建议使用外部表。
而对于托管表,配置单元可以完全控制数据。尽管您可以将任何外部表转换为托管表,反之亦然

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

在您的案例中,您经常对数据进行修改,因此最好是hive完全控制数据。在此场景中,建议使用托管表。
除此之外,托管表比外部表更安全,因为任何人都可以访问外部表。在托管表中,您可以实现hive级别的安全性,这提供了更好的控制,但在外部情况下,您必须实现hdfs级别的安全性。
你可以参考下面的链接,这些链接可以给你一些提示
外部与托管表比较

相关问题