【问题标题】:Databricks fails accessing a Data Lake Gen1 while trying to enumerate a directoryDatabricks 在尝试枚举目录时无法访问 Data Lake Gen1
【发布时间】:2019-03-22 12:52:50
【问题描述】:

我正在使用(嗯...尝试使用)Azure Databricks,并且我创建了一个笔记本。

我希望笔记本连接我的 Azure Data Lake (Gen1) 并转换数据。我按照documentation 将代码放在笔记本的第一个单元格中:

spark.conf.set("dfs.adls.oauth2.access.token.provider.type", "ClientCredential")
spark.conf.set("dfs.adls.oauth2.client.id", "**using the application ID of the registered application**")
spark.conf.set("dfs.adls.oauth2.credential", "**using one of the registered application keys**")
spark.conf.set("dfs.adls.oauth2.refresh.url", "https://login.microsoftonline.com/**using my-tenant-id**/oauth2/token")

dbutils.fs.ls("adl://**using my data lake uri**.azuredatalakestore.net/tenantdata/events")

执行失败并出现以下错误:

com.microsoft.azure.datalake.store.ADLException:枚举错误 目录/

操作 null 因异常 java.io.IOException 失败:服务器 返回的 HTTP 响应代码:400 用于 URL: https://login.microsoftonline.com/使用 my-tenant-id/oauth2/token 在 5 次尝试后抛出最后遇到的异常。

[java.io.IOException,java.io.IOException,java.io.IOException,java.io.IOException,java.io.IOException] [ServerRequestId:null] 在 com.microsoft.azure.datalake.store.ADLStoreClient.getExceptionFromResponse(ADLStoreClient.java:1169) 在 com.microsoft.azure.datalake.store.ADLStoreClient.enumerateDirectoryInternal(ADLStoreClient.java:558) 在 com.microsoft.azure.datalake.store.ADLStoreClient.enumerateDirectory(ADLStoreClient.java:534) 在 com.microsoft.azure.datalake.store.ADLStoreClient.enumerateDirectory(ADLStoreClient.java:398) 在 com.microsoft.azure.datalake.store.ADLStoreClient.enumerateDirectory(ADLStoreClient.java:384)

我已将已注册的应用程序分配给 Data Lake 的 Reader 角色:

问题

如何允许 Spark 访问数据湖?

更新

我已授予 tenantdataevents 文件夹 ReadExecute 访问权限:

【问题讨论】:

  • 也许尝试将应用程序设置为Contributor 角色而不是Reader

标签: scala azure apache-spark azure-data-lake azure-databricks


【解决方案1】:

Gen1 湖上的 RBAC 角色不授予对数据的访问权限(仅授予资源本身),但 Owner 角色除外,它授予超级用户访问权限并授予完全数据访问权限。

您必须使用门户中的数据资源管理器或使用 POSIX 权限下载存储资源管理器来授予对文件夹/文件本身的访问权限。

本指南解释了如何做到这一点的详细信息:https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-access-control

参考:https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-secure-data

只有所有者角色会自动启用文件系统访问。这 参与者、读者和所有其他角色都需要 ACL 才能启用任何 文件夹和文件的访问级别

【讨论】:

  • 抱歉延迟回复。我确实拥有这两个文件夹的权限... :(
  • 您必须至少对您尝试访问的文件夹上方的每个文件夹(包括 root)拥有执行权限。
  • 根目录、tenantdata 文件夹和 events 文件夹都具有读取和执行权限... :(
  • 作为测试,您可以将您的主体添加到资源的所有者组中。如果可行,那么您在某处错过了文件夹权限。
猜你喜欢
  • 2022-08-14
  • 2020-08-21
  • 2020-02-08
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
相关资源
最近更新 更多