什么是Unity Catalog?

本文将介绍用于Lakehouse的Databricks数据治理解决方案Unity Catalog。

Unity目录概述

在Unity Catalog中,管理员和数据管理员在Databricks帐户的所有工作区中集中管理用户和他们对数据的访问。不同工作区中的用户可以共享对相同数据的访问,这取决于Unity Catalog中集中授予的权限。

Unity目录图

Unity Catalog的主要功能包括:

  • 定义一次,处处安全: Unity Catalog提供了一个单一的地方来管理适用于所有工作区和角色的数据访问策略。

  • 符合标准的安全模型: Unity Catalog的安全模型基于标准的ANSI SQL,允许管理员使用熟悉的语法在目录、数据库(也称为模式)、表和视图级别上授予现有数据湖的权限。

  • 内置的审计: Unity Catalog自动捕获用户级审计日志,记录对数据的访问。

Unity Catalog对象模型

在Unity Catalog中,主数据对象的层次结构从metastore流向table:

  • Metastore:元数据的顶层容器。每个亚metastore公开一个三级名称空间(目录模式表格)来组织你的资料。

  • 目录:对象层次结构的第一层,用于组织数据资产。

  • 模式:也称为数据库,模式是对象层次结构的第二层,包含表和视图。

  • 表格:对象层次结构中的最低级别,表可以是外部(存储在您选择的云存储中的外部位置)或管理表(存储在专门为Databricks创建的云存储中的存储容器中)。您也可以创建只读的观点从表。

Unity Catalog对象模型图

你引用Unity目录中的所有数据使用三级名称空间

Metastores

metastore是Unity Catalog中对象的顶级容器。它存储数据资产(表和视图)以及控制对它们的访问的权限。Databricks帐户管理员可以创建亚metastore并将其分配给Databricks工作区,以控制哪些工作负载使用每个亚metastore。对于使用Unity Catalog的工作空间,它必须附加一个Unity Catalog metastore。

每个metastore都配置了AWS帐户中S3桶中的根存储位置。此存储位置用于元数据和管理表数据。

请注意

这个亚矿不同于在Unity Catalog发布之前创建的Databricks工作区中包含的亚矿。如果你的工作空间包含一个遗留的Hive metastore,那么该metastore中的数据可以在Unity Catalog中以一个名为hive_metastore

看到创建一个Unity Catalog metastore

目录

目录是Unity catalog的三层命名空间的第一层。它用于组织数据资产。用户可以看到分配给他们的所有目录使用数据权限

看到创建和管理目录

模式

模式(也称为数据库)是Unity Catalog的三级命名空间的第二层。模式组织表和视图。要访问(或列出)模式中的表或视图,用户必须具有使用模式及其父编目上的数据权限,并且它们必须具有选择表或视图的权限。

看到创建和管理模式(数据库)

表位于Unity Catalog的三级命名空间的第三层。它包含数据行。要创建表,用户必须拥有创建而且使用模式上的权限,它们必须具有使用父目录上的权限。要查询一个表,用户必须拥有选择允许在桌面上,他们必须有使用对其父架构和编目的权限。

一个表可以是管理外部

管理表

托管表是在Unity Catalog中创建表的默认方式。这些表存储在创建metastore时配置的根存储位置中。他们使用δ表的格式。

删除托管表时,其底层数据将在30天内从云租户中删除。

看到管理表

外部表

外部表是其数据存储在根存储位置之外的表。只有在需要使用其他工具直接访问数据时,才使用外部表。

当你删除一个外部表时,Unity Catalog不会删除底层数据。您可以管理外部表上的特权,并按照与托管表相同的方式在查询中使用它们。

外部表可以使用以下文件格式:

  • δ

  • CSV

  • JSON

  • AVRO

  • 拼花

  • 兽人

  • 文本

看到外部表

存储凭证和外部位置

为了管理外部表对底层云存储的访问,Unity Catalog引入了以下对象类型:

  • 存储凭证封装提供对云存储访问的长期云凭据。例如IAM角色,可以访问S3桶。

  • 外部位置包含对存储凭据和云存储路径的引用。

看到管理外部位置和存储凭证

的观点

视图是由metastore中的一个或多个表和视图创建的只读对象。它位于Unity Catalog的第三层三级名称空间.可以从多个模式和目录中的表和其他视图创建视图。你可以创建动态视图启用行级和列级权限。

看到创建动态视图

统一目录的身份管理

Unity Catalog使用Databricks帐户中的身份来解析用户、服务主体和组,并强制执行权限。

若要在帐户中配置身份,请遵循管理用户、服务主体和组.在创建时引用这些用户、服务主体和组访问控制策略在Unity目录。

Unity Catalog用户、服务主体和组也必须添加到工作区中,以访问笔记本、Databricks SQL查询、数据资源管理器或REST API命令中的Unity Catalog数据。将用户、服务主体和组分配到工作空间被称为联合身份验证

所有附加了Unity Catalog亚矿的工作区都启用了身份联合。

团体特别注意事项

工作区中已经存在的任何组都被标记工作空间的地方在帐户控制台中。在Unity Catalog中不能使用这些工作空间-本地组来定义访问策略。您必须使用帐户级别的组。如果在命令中引用了工作空间-本地组,则该命令将返回一个错误,表示没有找到该组。如果您以前使用工作空间-本地组来管理对笔记本和其他工件的访问,那么这些权限仍然有效。

看到管理组

统一目录的管理角色

管理Unity Catalog需要以下管理角色:

  • 账户管理员可以管理身份,云资源和工作空间和Unity Catalog亚存储的创建。

    帐户管理员可以为Unity目录启用工作区。他们可以同时授予工作区和metastore管理权限。

  • Metastore管理员可以管理metastore中所有可安全对象的特权和所有权,例如谁可以创建目录或查询表。

    创建Unity Catalog metastore的帐户admin将成为初始metastore管理员。metastore管理员还可以选择将此角色委托给另一个用户或组。我们建议将metastore admin分配给一个组,在这种情况下,组的任何成员都可以获得metastore admin的特权。看到(推荐)转移你的metastore的所有权到一个组

  • 工作空间管理员可以将用户添加到Databricks工作空间,为他们分配工作空间管理员角色,并管理对工作空间中对象和功能的访问,例如创建集群和更改作业所有权的能力。

看到管理用户、服务主体和组

Unity目录中的数据权限

在Unity Catalog中,默认情况下数据是安全的。最初,用户无法访问metastore中的数据。访问权限可以由metastore管理员(对象的所有者)或包含该对象的编目或模式的所有者授予。Unity Catalog中的安全对象是分层的,权限向下继承。

可以使用数据资源管理器、SQL命令或REST api分配和撤销权限。

看到在Unity目录中管理权限

Unity目录的集群访问模式

要访问Unity Catalog中的数据,集群必须配置正确的访问模式.Unity目录在默认情况下是安全的。如果集群没有配置支持Unity-Catalog的访问模式之一(即共享或单用户),则集群不能访问Unity Catalog中的数据。

看到创建集群和SQL仓库与统一目录访问

Unity目录的数据沿袭

您可以使用Unity Catalog在Databricks集群或SQL仓库上执行的任何语言的查询中捕获运行时数据沿袭。沿袭被捕捉到列级别,包括与查询相关的笔记本、工作流和仪表板。要了解BOB低频彩更多信息,请参见捕获和查看数据沿袭与统一目录

如何为我的组织设置Unity目录?

要为您的组织设置Unity Catalog,请执行以下操作:

  1. 配置一个S3桶和IAM角色,Unity Catalog可以用来存储和访问您的AWS帐户中的数据。

  2. 为组织运行的每个区域创建一个转移,并将工作空间附加到转移。每个工作空间将拥有您在Unity Catalog中管理的数据的相同视图。

  3. 如果您有一个新帐户,请向Databricks帐户添加用户、组和服务主体。

接下来,创建并授予对目录、模式和表的访问权。

有关完整的安装说明,请参见开始使用Unity目录

支持计算

Unity Catalog需要运行Databricks Runtime 11.1或以上版本的集群。Unity目录在默认情况下是支持的SQL仓库计算的版本。

Databricks Runtime的早期版本支持Unity Catalog的预览版本。在Databricks Runtime早期版本上运行的集群不支持所有Unity Catalog GA特性和功能。

有关稍后Databricks Runtime版本中更新的Unity Catalog功能的信息,请参见发布说明对于那些版本。

支持地区

以下区域支持Unity Catalog:

  • us-east-1

  • us-east-2

  • us-west-1

  • us-west-2

  • ap-northeast-1

  • ap-northeast-2

  • ap-south-1

  • ap-southeast-1

  • ap-southeast-2

  • ca-central-1

  • eu-central-1

  • 一来就

  • eu-west-2

支持的数据文件格式

Unity Catalog支持以下表格格式:

  • 管理表必须使用δ表的格式。

  • 外部表可以使用δCSVJSONavro拼花兽人,或文本

限制

Unity Catalog有以下限制。

请注意

如果您的集群运行在Databricks运行时版本低于11.1,则可能会有其他限制。Unity Catalog一般可用性依赖于使用Databricks Runtime 11.1或以上版本。

  • Scala、R和使用机器学习运行时的工作负载仅在使用单用户访问模式的集群上受支持。这些语言中的工作负载不支持使用动态视图实现行级或列级安全性。

  • 当您使用Unity Catalog作为克隆的源或目标时,不支持浅克隆。

  • bucket不支持Unity Catalog表。如果你运行命令试图在Unity Catalog中创建bucket表,它会抛出一个异常。

  • 如果一些集群访问Unity Catalog而其他集群不访问,那么从多个区域的工作区写入相同的路径或Delta Lake表可能会导致不可靠的性能。

  • Delta表支持外部表上的分区,但不支持任何其他数据源类型。

  • 覆盖模式的DataFrame写入操作到统一目录只支持Delta表,不支持其他文件格式。用户必须具有创建父模式上的特权,并且必须是现有对象的所有者或具有修改对象上的特权。

  • 流媒体目前有以下限制:

    • 使用共享访问模式的集群不支持。对于流工作负载,必须使用单用户访问模式。

    • 目前还不支持异步检查点。

    • 在Databricks Runtime版本11.2及以下,在通用或作业集群上持续超过30天的流查询将抛出异常。对于长时间运行的流查询,请配置自动作业重试或使用Databricks Runtime 11.3及以上版本。

  • 目前不支持从Delta Live tables管道引用Unity Catalog表。

  • 单用户集群支持spark提交作业,共享集群不支持。看到什么是集群访问模式?

  • 以前在工作空间中创建的组(即工作空间级组)不能在Unity Catalog GRANT语句中使用。这是为了确保跨工作空间的组的一致视图。要在GRANT语句中使用组,请在帐户级别创建组,并更新用于主体或组管理的任何自动化(例如SCIM、Okta和AAD连接器以及Terraform),以引用帐户端点而不是工作空间端点。看到帐户组和工作空间-本地组之间的区别

资源配额

Unity Catalog对所有安全对象强制执行资源配额。限制尊重统一目录中相同的分层组织。如果您希望超出这些资源限制,请与Databricks帐户代表联系。

下面的配额值是相对于Unity Catalog中的父对象表示的。

对象

价值

表格

模式(数据库)

10000

模式

目录

10000

目录

metastore

1000

存储凭证

metastore

200

外部位置

metastore

500

功能

模式

10000

有关Delta共享限制,请参见资源配额