将 Unity 目录卷 添加为 Databricks Apps 资源,以便应用可以通过治理和访问控制从 Unity 目录中读取和写入存储的文件和目录。 卷为非结构化数据(例如配置文件、模型项目、日志或其他应用所需的基于文件的数据)提供永久性存储。
特权要求
若要访问 Unity Catalog 卷中的文件,应用的服务主体必须对父目录拥有USE CATALOG特权,对父架构拥有USE SCHEMA特权,并对卷拥有READ VOLUME或WRITE VOLUME特权。 添加卷资源时,Azure Databricks 会自动向应用的服务主体授予这些权限。
要使此自动授予成功,对于每个权限,以下条件之一必须为真:
-
对于
USE CATALOG: 所有帐户用户都对目录具有USE CATALOG权限,或者你对目录具有MANAGE特权。 -
对于
USE SCHEMA: 所有帐户用户都对架构具有USE SCHEMA权限,或者你对架构拥有MANAGE权限。 -
对于
READ VOLUME或WRITE VOLUME: 所有帐户用户都对卷拥有READ VOLUME或WRITE VOLUME权限,或者你对卷拥有MANAGE权限。
添加 Unity 目录卷资源
在将卷添加为应用资源之前,请查看 资源先决条件。
- 创建或编辑应用时,导航到 “配置” 步骤。
- 在 “应用资源 ”部分中,单击“ + 添加资源”。
- 选择 UC 卷 作为资源类型。
- 从工作区中的可用卷中选择 Unity 目录卷。 卷必须已存在于 Unity 目录中。
- 为应用选择适当的权限级别:
- 可以读取: 授予应用读取卷中存储的文件和目录的权限。 这适用于只需要访问数据的应用。
- 可以读取和写入: 授予应用添加、删除或修改卷中的文件和目录的权限。 如果你的应用需要写入数据(例如保存输出或日志),请选择此权限。
- (可选)指定自定义资源密钥,这是在应用配置中引用存储卷的方式。 默认键为
volume.
环境变量
使用 Unity Catalog 卷资源部署应用时,Azure Databricks 会通过环境变量公开卷路径,可以使用 valueFrom 字段引用这些环境变量。
有关详细信息,请参阅 使用环境变量访问资源。
删除 Unity Catalog 存储卷资源
从应用中删除 Unity 目录卷资源时,应用的服务主体将失去对该卷的访问权限。 卷本身保持不变,并仍然可以供具有适当权限的其他用户和应用程序使用。
最佳做法
使用 Unity 目录卷资源时,请考虑以下事项:
- 授予最小权限。 使用
Can read权限,除非您的应用需要将数据写入卷。 - 将 Unity 目录卷而不是 Databricks 文件系统用于新应用程序,因为卷提供更好的治理、访问控制和与云存储的兼容性。
- 使用清晰的目录结构在卷中组织数据,以便更轻松地管理权限和访问模式。
- 对不同的数据类型或敏感度级别使用单独的卷来应用适当的访问控制。