在Apache Hive中,具有大量外部表的DB花费太多时间进行DROP CASCADE

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

我找到了很多如何删除数据库及其所有表的答案,但是为什么删除每个表需要大约3-4秒,似乎是在SERIAL中(一个接一个)。

我有一个数据库,该数据库具有指向镶木地板位置的2,414个EXTERNAL表,DROP DATABASE <db> CASCADE;可能需要1-2小时才能删除数据库的元数据。

[在一个单独的会话中,我可以重复SHOW TABLES IN <deleted DB>;,并观察表的计数每3-4秒以大约1的速度下降。在会话释放删除内容之前,这可能需要2个小时以上的时间,并允许我们用新的数据库替换数据库...

504 rows selected (0.29 seconds)
...
503 rows selected (0.17 seconds)
...
502 rows selected (0.29 seconds)
...

Hive花了这么长时间?有可以用来使其更快的配置吗?有什么办法可以告诉我这段时间在做什么?

[我认为其他人会遇到这个问题,如果它更常见,那么我想我可以在某个地方进行调整以解决此问题(?)...

实木复合地板似乎并没有在删除的数据库下删除,因此它似乎与hdfs / parquet文件没有任何关系,除非由于任何原因删除外部表对其进行检查...

任何想法为什么会这么慢?

我发现了如何删除数据库及其所有表的很多答案,但是关于为什么删除每个表需要大约3-4秒的时间,似乎是在SERIAL中(一个接一个),所以没有任何答案。我有一个数据库,其中有...

hadoop hive parquet cascade drop
1个回答
0
投票

AFAIK,它必须删除其所有引用。它可以是外部表,但是如果有很多来自metastore的分区,统计信息等。另外,如果它有很多行,则需要获取特定的锁。您可能需要检查元存储库(mysql或同等存储库),并查看是否可以定期引入任何索引或收集统计信息。

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