使用Unity Catalog是否需配置Hive Metastore及查询卡顿问题
针对Azure Databricks Unity Catalog与Hive Metastore问题的解答
问题1:仅使用Unity Catalog时,是否仍需配置Hive Metastore?
不需要强制配置。但默认情况下,Databricks集群会把hive_metastore作为默认catalog,所以即使你只用UC,集群启动后还是会尝试连接未配置的hive_metastore,从而持续抛出「Metastore Down」错误。
解决办法是把集群的默认catalog切换到你在Unity Catalog中创建的catalog(比如默认的main),这样集群就不会再去尝试连接未配置的hive_metastore了。
问题2:能否避免查询中的databaseExists操作?
可以避免。这个卡住的databaseExists操作本质是集群在检查默认catalog下的数据库是否存在——因为默认是hive_metastore,而它未配置,所以会超时等待。
你可以通过两种方式解决:
- 集群配置层面:在集群的「Spark配置」中添加一行:
spark.sql.defaultCatalog=你的UC catalog名称(比如main),这样所有查询默认都会使用UC的catalog,不会触发对hive_metastore的检查。 - 会话层面:每次启动集群后,先执行
USE CATALOG 你的UC catalog名称;,后续查询就会默认使用该catalog,不会再去碰hive_metastore。
另外,如果你完全不需要hive_metastore,也可以通过Databricks管理员权限在控制台中禁用它,但切换默认catalog是更简单直接的方案。
内容的提问来源于stack exchange,提问作者ALdo
相关产品推荐
相关产品推荐

