【发布时间】: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 访问数据湖?
更新
我已授予 tenantdata 和 events 文件夹 Read 和 Execute 访问权限:
【问题讨论】:
-
也许尝试将应用程序设置为
Contributor角色而不是Reader。
标签: scala azure apache-spark azure-data-lake azure-databricks