重要
此功能在以下区域中为公共预览版:westus、westus2、eastus、eastus2、centralus、southcentralus、northeurope、westeurope、australiaeast、brazilsouth、canadacentral、centralindia、southeastasia、uksouth。
本页介绍如何将 Lakebase 数据库注册为只读 Unity 目录。 这样,就可以使用 Unity Catalog 权限来管理数据访问,并利用托管数据同步之类的集成功能。
所有权和权限
- 如果数据库 不存在 ,可以随目录一起创建数据库。 在这种情况下,对象的所有权将遵循 这些准则。
- 目录创建者还必须对 Unity 目录元存储拥有
CREATE CATALOG权限。
创建目录
若要将数据库注册到 Unity 目录,请使用 Azure Databricks UI、API 调用、Python SDK 或 CLI。
UI
- 在工作区边栏中单击 “计算 ”。
- 在 “数据库实例 ”选项卡上,选择数据库实例。
- 在“ 目录 ”选项卡上,单击“ 创建目录”。
- 可以将现有数据库注册为 Unity 目录或创建新的数据库。 使用以下选项之一:
- 若要使用现有数据库:请输入所需的 Unity 目录名称和现有 Postgres 数据库的名称。 默认数据库
databricks_postgres可用作数据库名称。 - 若要同时创建新的 Postgres 数据库和 Unity 目录目录:输入所需的目录名称并打开 “创建新数据库”。
- 若要使用现有数据库:请输入所需的 Unity 目录名称和现有 Postgres 数据库的名称。 默认数据库
- 单击 “创建” 。
- 创建后,单击 目录 列表中的目录以查看目录资源管理器视图。
Python SDK
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.database import DatabaseCatalog
# Initialize the Workspace client
w = WorkspaceClient()
# Register an existing database as a UC catalog
catalog = w.database.create_database_catalog(
DatabaseCatalog(
name="my_catalog", # Name of the UC catalog to create
database_instance_name="my-instance", # Name of the database instance
database_name="databricks_postgres", # Name of the existing Postgres database
)
)
print(f"Created database catalog: {catalog.name}")
# Create a new database and register it as a UC catalog
catalog = w.database.create_database_catalog(
DatabaseCatalog(
name="new_catalog", # Name of the UC catalog to create
database_instance_name="my-instance", # Name of the database instance
database_name="new_database", # Name of the Postgres database to register (and optionally create)
create_database_if_not_exists=True # Create the database if it doesn't exist
)
)
print(f"Created new database and catalog: {catalog.name}")
CLI
# Register an existing database as a UC catalog
databricks database create-database-catalog my_catalog my-instance databricks_postgres
# Create a new database and register it as a UC catalog
databricks database create-database-catalog new_catalog my-instance new_database \
--create-database-if-not-exists
curl
export PG_DATABASE_NAME="<name of the PG database to sync to UC>"
export CATLAOG_NAME="<name of UC catalog to create>"
// Optional
export CREATE_DATABASE_IF_NOT_EXISTS="<whether to create a new database>"
curl -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" https://$WORKSPACE/api/2.0/database/catalogs \
--data-binary @- << EOF
{
"name": "$CATALOG_NAME",
"database_name": "$PG_DATABASE_NAME",
"instance_name": "$INSTANCE_NAME",
"create_database_if_not_exists": "$CREATE_DATABASE_IF_NOT_EXISTS" // optional
}
局限性
- 数据库名称只能包含字母数字或下划线字符。 请注意,数据库名称不能包含连字符。
- 基于数据库的 Unity Catalog 中创建的目录是只读的。
通过数据库目录浏览 Unity 目录中的 Postgres 对象
若要查看目录,请确保附加了正在运行的无服务器 SQL 仓库。
- 在工作区边栏中单击 “目录 ”。
- 在 目录 浏览器中,单击群集并选择正在运行的无服务器 SQL 仓库作为计算资源。
- 单击“ 开始”并关闭。
打开目录、架构和表时,应自动触发同步。 但是,UI 可能会缓存数据以减少 Postgres 请求数,因此新对象可能不会立即显示。
若要触发完全刷新,请单击“
。
在 Unity 目录中删除数据库目录
你必须是数据库目录或元存储管理员的所有者才能将其删除。
Databricks 建议首先从数据库目录中删除所有同步表。 每个源表只能用于创建 20 个同步表,删除数据库目录后,同步表最多可能需要三天才能在 Unity 目录中清理。 Unity Catalog 中等待删除的同步表将计入每个源表最多 20 个同步表的限制。
使用 Azure Databricks UI、Python SDK、CLI 或 API 删除数据库目录。
UI
- 在工作区边栏中单击 “目录 ”。
- 从 “目录 ”窗格中选择要删除的数据库目录。
- 单击
然后单击“ 删除”。
Python SDK
from databricks.sdk import WorkspaceClient
# Initialize the Workspace client
w = WorkspaceClient()
# Delete a database catalog
catalog_name = "my_catalog"
w.database.delete_database_catalog(name=catalog_name)
print(f"Deleted database catalog: {catalog_name}")
CLI
# Delete a database catalog
databricks database delete-database-catalog my_catalog
curl
curl -X DELETE --header "Authorization: Bearer ${DATABRICKS_TOKEN}" https://$WORKSPACE/api/2.0/database/catalogs/$CATALOG_NAME
删除目录后,可以重命名或删除 Postgres 数据库。