用于更新和插入的 Hive 托管与外部表
Posted
技术标签:
【中文标题】用于更新和插入的 Hive 托管与外部表【英文标题】:Hive Managed vs External table for Updates and Inserts 【发布时间】:2020-09-09 02:46:04 【问题描述】:hive 外部表和托管表的优缺点是什么?
我们想在 Hive 表中进行更新和插入,但想知道对这些表采取哪种方法(托管表或创建一种解决方法,在手动文件更新后刷新外部表),尤其是在随着时间的推移添加许多文件之后.. 一种方法或者另一个变得太慢(例如,太多文件/太多更新无法通过 Metastore 跟踪,因此主节点变慢?)?
谢谢。
【问题讨论】:
【参考方案1】:在 Hive 上执行 DML 有一些限制。请阅读文档链接以获取更多详细信息 - https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions。始终建议不要在 Hive 托管表上使用 DML,特别是如果数据量很大或者表的大小随着时间的推移而增长,这些操作会变得太慢。虽然,如果在分区/桶而不是完整表上完成这些操作会快得多。尽管如此,最好处理文件中的编辑并通过外部表进行完全刷新,并且仅在托管表上使用 DML 作为最后的手段。
【讨论】:
以上是关于用于更新和插入的 Hive 托管与外部表的主要内容,如果未能解决你的问题,请参考以下文章