Azure Databricks - 解决:用户没有对任何文件错误的 SELECT 权限,从而停止执行“保存”

问题描述 投票:0回答:1

我们有两个不同的 Azure 云资源组 RG1 和 RG2,其中 RG1 托管数据源的 ADB_source,RG2 托管数据接收器的 ADB_sink 和 ADLS_sink(gen2)。

用例: 我们在 ADB_source 中有一些增量表(启用 ACL),其中用户列表具有读取访问权限。 在 ADB_source 工作区中,我们需要读取增量表并将它们作为 parquet 写入 ADLS_sink 中,以便在接收器中进一步处理。

可用: 我们在 ADB_Source 工作区中创建了一个高并发集群,它 -

  • 仅允许 Python 和 SQL(dbutils.fs 也受到限制)。
  • 凭证传递已禁用。
  • 在 Spark 配置中启用了 ACL。
  • 已为 ADLS_sink 中的容器创建挂载点。
  • 没有集群的管理员访问权限。

观察到的错误: 只要增量表位于 ADB_source 工作区中,我们就可以按预期读取增量表并运行操作命令。但是,当我们使用

.save()
将该数据写入 ADLS_sink 时,我们会收到以下错误。

Py4JJavaError: An error occurred while calling o410.save. : java.lang.SecurityException: User does not have permission SELECT on any file. User does not have permission MODIFY on any file. 

如果有人可以解释这一点并建议成功实施用例所需的额外安全检查/访问,我将不胜感激。

azure-databricks access-control azure-data-lake-gen2
1个回答
0
投票

发生这种情况是因为启用了 ACL,请参阅以下文档: https://learn.microsoft.com/en-us/azure/databricks/kb/security/table-create-security-exception

© www.soinside.com 2019 - 2024. All rights reserved.