我们正在 Azure Databricks 中尝试 Unity 目录。我们将预先存在的工作区连接到新的元存储。
我创建了一个新目录。当我运行笔记本并尝试写入表“myfirstcatalog.bronze.mytable”时,出现错误
[UC_NOT_ENABLED] 此集群上未启用 Unity Catalog。
我已经在预先存在的集群和新集群上运行了这个。
我一直在考虑在我们的主要(唯一)工作区中打开 Databricks Unity Catalog,但我担心这可能会如何影响我们现有的 dbt 负载以及新的三部分对象引用。
我从 dbt-databricks发行说明中看到,您需要 >= 1.1.1 才能获得 Unity 支持。
带有它的代码片段仅显示在配置文件中设置目录属性。我计划将 dbt 生成的对象的一些源放在单独的目录中。
如果可用的话,我什至可能选择将 dbt 生成的对象放在单独的目录中。
由于打开 Unity Catalog 是工作区中的一条单行道,因此我不想即兴发挥并看看会发生什么。
有人将 dbt 与 Unity Catalog 一起使用并在项目中使用了大量目录吗?
如果是这样,是否有任何问题以及如何指定来源和特定型号的目录?
问候,
阿什利
这个问题非常简单。似乎在 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
我已经开始阅读 Databricks 推出的 Unity Catalog。我理解它试图解决的基本问题,但我不明白目录到底是什么。
这可以在 Databricks 文档中找到,
目录包含架构(数据库),架构包含表和视图。
https://docs.databricks.com/data-governance/unity-catalog/create-catalogs.html
这个添加的层(在模式之上)有何帮助?我猜这与治理有关?
如果可能的话,我真的很感激一个例子。
我正在将 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 Unity Catalog 的新手,我正在尝试按照https://docs.databricks.com/_static/notebooks/unity-catalog-example-notebook.html上的快速入门笔记本进行操作。
在我看来,我已经做了我必须做的一切:
同一笔记本的唯一(但最重要)失败的 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 …