在 Databricks 中使用 Spark API 连接到 ADLS

Connect to ADLS with Spark API in Databricks

我正在尝试使用 Spark API 建立与 ADLS 的连接。我对此很陌生。我阅读了说明您可以使用以下代码建立连接的文档:

spark.conf.set("fs.adl.oauth2.access.token.provider.type", "ClientCredential")
spark.conf.set("fs.adl.oauth2.client.id", "<application-id>")
spark.conf.set("fs.adl.oauth2.credential", dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential>"))
spark.conf.set("fs.adl.oauth2.refresh.url", "https://login.microsoftonline.com/<directory-id>/oauth2/token")

我可以在 Azure 门户/Azure 存储资源管理器中看到我对我需要的 ADLS 文件夹具有 Read/Write/Execute 权限,但我不知道在哪里可以找到 application-idscope-name, 和 key-name-for-service-credential.

有两种访问 Azure Data Lake Storage Gen1 的方法:

  1. 使用 服务主体和 OAuth 2.0。
  2. 直接使用服务主体。

先决条件:

您需要创建并授予服务主体权限。

Create an Azure AD application and service principal that can access resources

注意以下属性:

application-id: 唯一标识客户端应用程序的 ID。

directory-id: 唯一标识 Azure AD 实例的 ID。

service-credential:应用程序用来证明其身份的字符串。

注册服务主体,在 Azure Data Lake Storage Gen1 帐户上授予正确的role assignment,例如贡献者。

方法 1: 装载 Azure Data Lake Storage Gen1 资源或文件夹

方法 2: 使用服务主体和 OAuth 2.0 直接通过 Spark API 访问

方法 3:使用服务主体和 OAuth 2.0 使用 dbutils.secrets.get(scope = "", key = "") 直接通过 Spark API 访问,检索已作为秘密存储在中的存储帐户访问密钥一个秘密范围。

参考: Databricks - Azure Data Lake Storage Gen1.