在 Azure 数据工厂中为作业集群启用 Unity 目录

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

我正在尝试通过 Azure 数据工厂中的管道在作业集群上运行数据工程作业。它只是在笔记本中运行一些代码。

我遇到以下错误:

org.apache.spark.sql.connector.catalog.CatalogNotFoundException: Catalog 'my-catalog' plugin class not found: spark.sql.catalog.my-catalog is not defined

此错误发生在我的代码中的这一行:

_get_spark().sql(f"USE CATALOG `{self.catalog}`")

我对此的评估是正在启动的作业集群没有启用 Unity Catalog。

当我向下滚动到集群的标签部分时,我可以看到这一点(缺少 Unity Catalog 标签): enter image description here

我该如何解决这个问题?

我想我所要做的就是在设置链接服务时将“其他集群设置”下的“Unity 目录访问模式”设置为“共享”?

enter image description here

我在这里缺少什么?

azure-data-factory azure-databricks databricks-unity-catalog
1个回答
0
投票

Apache Spark 中的 CatalogNotFoundException。

当Spark找不到指定的目录时,就会出现此错误。

您可以直接使用spark对象来代替

_get_spark()

我已尝试在下面列出可用的目录:

available_catalogs = spark.catalog.listCatalogs()
for catalog in available_catalogs:
    print(catalog)

结果:

CatalogMetadata(name='adbrx02', description=None)
CatalogMetadata(name='hive_metastore', description=None)
CatalogMetadata(name='samples', description=None)
CatalogMetadata(name='system', description=None)

正如您提到的,错误发生在

_get_spark().sql(f"USE CATALOG 
{self.catalog}
")

您可以尝试以下方法:

spark.conf.set("spark.sql.catalog.adbrx02", "com.databricks.spark.catalog")
spark.sql("USE CATALOG adbrx02")

在上面设置目录配置并在 SQL 查询中使用目录。

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