当与Sparklyr ADLS Gen1读取数据错误

学习如何解决错误发生在读取数据从Azure数据存储Gen1湖Sparklyr砖。

写的亚当Pavlacka

去年发表在:2022年12月9日

问题

当使用一个集群启用了Azure广告凭据透传,命令你运行在集群能够读和写你的数据在Azure数据存储Gen1湖而不需要为访问存储配置服务主体的凭证。

例如,您可以使用直接访问数据

% python spark.read.csv (adl: / /myadlsfolder.azuredatalakestore.net/MyData.csv) .collect ()

然而,当你试图使用Sparklyr直接访问数据:

% r spark_read_csv (sc、名称=“空气”,路径=“诽谤联盟:/ /myadlsfolder.azuredatalakestore.net/MyData.csv”)

它失败的错误:

com.databricks.backend.daemon.data.client.adl。AzureCredentialNotFoundException: Could not find ADLS Gen1 Token

导致

spark_read_csv函数Sparklyr不能提取ADLS牌启用身份验证和读取数据。

解决方案

一个解决方案是使用Azure应用程序id,应用程序的关键,目录id山在DBFS ADLS位置:

% python #凭证,从Azure applicationId ADLS URI = <应用程序id > applicationKey = <应用密钥> directoryId = < directory-id > adlURI = < adl-uri >断言adlURI.startswith(“诽谤联盟:”)、“验证adlURI变量设置和开始诽谤联盟:“#山ADLS DBFS dbfsMountPoint = < mount-point-location > dbutils.fs位置。山(mount_point = dbfsMountPoint、源代码= adlURI extra_configs = {" dfs.adls.oauth2.access.token.provider。类型”:“ClientCredential”、“dfs.adls.oauth2.client。dfs.adls.oauth2 id”: applicationId。”dfs.adls.oauth2.refresh凭证”:applicationKey。”url”:“https://login.microsoftonline.com/{}/ oauth2 /令牌”.format (directoryId)})

然后,在R代码,使用挂载点读取数据:

% #安装Sparklyr % r install.packages (Sparklyr)库(Sparklyr) #创建Sparklyr连接sc < - spark_connect(方法=“砖”)# % r myData = spark_read_csv读取数据(sc、名称=“空气”,路径=“dbfs: / < mount-point-location > / myData.csv”)


这篇文章有用吗?