尝试枚举目录时,Databricks无法访问Data Lake Gen1

时间:2019-03-22 12:52:50

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

我正在使用(很好...试图使用)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/ 使用我的房客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)

我已将已注册的应用程序的Reader角色赋予了Data Lake:

enter image description here

问题

如何允许Spark访问Data Lake?

更新

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

Granted persmissions on folder

1 个答案:

答案 0 :(得分:1)

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

您必须使用门户网站中的Data Explorer授予对文件夹/文件本身的访问权限,或者使用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才能启用任何   文件夹和文件的访问级别