标签: databricks-unity-catalog

Databricks 中的集群上未启用 Unity 目录

我们正在 Azure Databricks 中尝试 Unity 目录。我们将预先存在的工作区连接到新的元存储。

我创建了一个新目录。当我运行笔记本并尝试写入表“myfirstcatalog.bronze.mytable”时,出现错误

[UC_NOT_ENABLED] 此集群上未启用 Unity Catalog。

我已经在预先存在的集群和新集群上运行了这个。

databricks azure-databricks databricks-unity-catalog

10
推荐指数
1
解决办法
2万
查看次数

Databricks Unity 目录上的 DBT

我一直在考虑在我们的主要(唯一)工作区中打开 Databricks Unity Catalog,但我担心这可能会如何影响我们现有的 dbt 负载以及新的三部分对象引用。

我从 dbt-databricks发行说明中看到,您需要 >= 1.1.1 才能获得 Unity 支持。
带有它的代码片段仅显示在配置文件中设置目录属性。我计划将 dbt 生成的对象的一些源放在单独的目录中。

如果可用的话,我什至可能选择将 dbt 生成的对象放在单独的目录中。
由于打开 Unity Catalog 是工作区中的一条单行道,因此我不想即兴发挥并看看会发生什么。

有人将 dbt 与 Unity Catalog 一起使用并在项目中使用了大量目录吗?

如果是这样,是否有任何问题以及如何指定来源和特定型号的目录?

问候,

阿什利

databricks dbt databricks-unity-catalog

7
推荐指数
1
解决办法
1868
查看次数

如何将 DLT 目标表定向到 Unity Catalog Metastore

这个问题非常简单。似乎在 DLT 中,您可以定义输出表名称,如下所示:

@dlt.table(name="my_table_name")
def my_pipeline():
  ...
Run Code Online (Sandbox Code Playgroud)

这会写入 hive_metastore 目录,但如何针对不同的目录自定义它?

pyspark databricks delta-live-tables databricks-unity-catalog

6
推荐指数
1
解决办法
2529
查看次数

Databricks 中的目录

我已经开始阅读 Databricks 推出的 Unity Catalog。我理解它试图解决的基本问题,但我不明白目录到底是什么。

这可以在 Databricks 文档中找到,

目录包含架构(数据库),架构包含表和视图。

https://docs.databricks.com/data-governance/unity-catalog/create-catalogs.html

这个添加的层(在模式之上)有何帮助?我猜这与治理有关?

如果可能的话,我真的很感激一个例子。

catalog databricks databricks-unity-catalog data-governance

5
推荐指数
1
解决办法
1950
查看次数

CI / CD 与 Databricks Unity 目录

我正在将 Databricks 工作区的表从 hive_metastore 迁移到 Unity Catalog。

我有三个 databricks 工作区:

  • 开发者
  • 测试
  • 产品

每个工作区都有自己的 ADLSv2 存储帐户。(开发、测试、生产)

目前,在开发时,我使用以下方式读取表格

df = spark.table('bronze.my_table') # schema.table
Run Code Online (Sandbox Code Playgroud)

这使用默认的 hive_metastore 指向相应的容器(工作空间开发 -> 存储帐户开发)。

但是,使用 Unity Catalog。看来我现在也必须根据我工作的工作空间来指定目录。除非工作空间有一个默认的统一目录。

df = spark.table('dev.bronze.my_table') # catalog.schema.table
Run Code Online (Sandbox Code Playgroud)

从 Dev -> Test -> Prod 工作区部署代码时。我想避免必须使用基于工作区(开发、测试、生产)的 Spark.table 动态设置所有笔记本的目录名称。基本上,在 Dev 中工作时,“bronze.my_table”指向存储在 dev 目录中的增量表数据。在 Prod 中,它指向存储在 prod 目录中的增量表数据。这可能吗?我假设我可以使用之前的 hive_metastore(每个工作区一个)并在其上构建 Unity Catalog(它们相互引用并且同步)。然而,Unity Catalog 取代 hive_metastore 的想法不是吗?

databricks databricks-unity-catalog

5
推荐指数
1
解决办法
1221
查看次数

DataBricks UnityCatalog 创建表失败,并显示“无法获取 SAS 令牌 UnauthorizedAccessException:PERMISSION_DENIED:请求未授权”

我是 DataBricks Unity Catalog 的新手,我正在尝试按照https://docs.databricks.com/_static/notebooks/unity-catalog-example-notebook.html上的快速入门笔记本进行操作。

在我看来,我已经做了我必须做的一切:

  • 我在 Azure 中创建了一个 Databricks 访问连接器(它成为托管标识)
  • 我创建了一个存储帐户 ADLS Gen2(具有分层命名空间的 Datalake)加上容器
  • 在我的数据湖容器上,我将存储 Blob 数据贡献者角色分配给上面的托管标识
  • 我创建了一个新的 Databricks Premium 工作区
  • 我在 Unity Catalog 中创建了一个新的元存储,将访问连接器“绑定”到 DataLake
  • 将元存储绑定到高级 databricks 工作区
  • 我向我的 Databricks 用户授予了上述 Databricks 工作区的管理员权限
  • 我在相同的高级工作区中创建了一个新集群,选择框架 11.1 和“单用户”访问模式
  • 我运行了工作区,它正确创建了一个新目录,为其分配了适当的权限,创建了一个架构,并确认我是该架构的所有者

同一笔记本的唯一(但最重要)失败的 SQL 命令是尝试创建托管 Delta 表并插入两条记录的命令:

CREATE TABLE IF NOT EXISTS quickstart_catalog_mauromi.quickstart_schema_mauromi.quickstart_table
  (columnA Int, columnB String) PARTITIONED BY (columnA);
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它开始工作,实际上它开始在我的存储帐户中创建此增量表的文件夹结构 在此输入图像描述

,但是它失败并出现以下错误:

java.util.concurrent.ExecutionException: Failed to acquire a SAS token for list on /data/a3b9da69-d82a-4e0d-9015-51646a2a93fb/tables/eab1e2cc-1c0d-4ee4-9a57-18f17edcfabb/_delta_log due to java.util.concurrent.ExecutionException: com.databricks.sql.managedcatalog.acl.UnauthorizedAccessException: PERMISSION_DENIED: request not authorized
Run Code Online (Sandbox Code Playgroud)

请注意,在运行表创建命令之前,我没有在“unity-catalog”容器下创建任何文件夹。所以看起来是可以成功创建文件夹结构,但是在创建“table”文件夹后,它无法获取“SAS …

databricks databricks-unity-catalog

5
推荐指数
2
解决办法
7711
查看次数