问题
当使用一个集群启用了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”)