我有一个 Azure SPN,它允许我使用证书 (.pem) 文件从 ADLS Gen2 读取数据。当我使用Azure SDK时,我可以轻松创建以下对象
from azure.identity import CertificateCredential
azure_credential = CertificateCredential(
tenant_id=tenant_id,
client_id=client_id,
certificate_data=client_certificate_bytes
)
然后用它来访问ADLS Gen2
DataLakeServiceClient(
account_url=ACCOUNT_URL,
credential=azure_credential,
).get_file_system_client(blob_container_name)
我需要使用 Apache Spark 中的相同 SPN,但我找不到实现此目的的方法。根据 ABFS 文档中编写的身份验证方法,这似乎不可能(https://hadoop.apache.org/docs/stable/hadoop-azure/abfs.html#Authentication)。我的目标是设置证书,就像我以前在 Spark conf 中设置客户端机密一样,如下所示。
spark_session.conf.set("fs.adl.oauth2.access.token.provider.type", "ClientCredential")
spark_session.conf.set("fs.adl.oauth2.client.id", client_id)
spark_session.conf.set("fs.adl.oauth2.credential", client_secret)
spark_session.conf.set("fs.adl.oauth2.refresh.url", f"https://login.microsoftonline.com/{tenant_id}/oauth2/token")
任何帮助将不胜感激。
根据官方Databricks文档,有多种方法可以连接到Azure Data Lake Storage (ADLS) Gen2。可用的方法包括:
需要注意的是,目前不支持直接在 Spark 配置中配置证书 (.pem),类似于管理机密的方式。