在pyspark中,我使用Azure服务原则(SPN)访问ADLS Gen 2。我正在使用spark conf设置SPN凭据。
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
我拥有的SPN是粒度的,并在容器级别而不是存储帐户级别上提供访问。这意味着对于容器abcd和wxyz(在同一个存储帐户中),我将有2个不同的SPN。
当我配置spark conf时,我可以在存储帐户级别上设置SPN。如何在容器级别设置SPN凭据?我的目标是以某种方式将SPN凭据添加到两个容器的spark conf中,并跨容器执行读/写操作。
我的用例是从一个容器中读取数据,然后写入同一存储帐户中的另一个容器。由于SPN是不同的,我只能在spark conf中同时设置1,所以我无法做到这一点。
如果你能帮忙的话,我将不胜感激。
1条答案
按热度按时间ojsjcaue1#
您可以在查询级别将这些访问详细信息传递给DataFrameReader相关选项: