【问题标题】:How to mount Azure Data Lake Store on DBFS如何在 DBFS 上挂载 Azure Data Lake Store
【发布时间】:2020-05-17 11:46:39
【问题描述】:

我需要使用 Azure 服务主体客户端凭据在 Azure Databricks 文件系统上装载 Azure Data Lake Store Gen1 数据文件夹。请帮忙解决一下

【问题讨论】:

    标签: azure databricks azure-data-lake azure-databricks


    【解决方案1】:

    访问 Azure Data Lake Storage Gen1 有三种方式:

    1. 传递您的 Azure Active Directory 凭据,也称为凭据传递。
    2. 使用服务主体和 OAuth 2.0 将 Azure Data Lake Storage Gen1 文件系统挂载到 DBFS。
    3. 直接使用服务主体。

    1.传递您的 Azure Active Directory 凭据,也称为凭据传递:

    您可以使用与登录 Azure Databricks 相同的 Azure Active Directory (Azure AD) 身份从 Azure Databricks 群集自动向 Azure Data Lake Storage Gen1 进行身份验证。当您为集群启用 Azure AD 凭据直通时,您在该集群上运行的命令将能够在 Azure Data Lake Storage Gen1 中读取和写入您的数据,而无需您配置服务主体凭据以访问存储。

    为标准集群启用 Azure Data Lake Storage 凭据直通

    有关完整的设置和使用说明,请参阅Secure access to Azure Data Lake Storage using Azure Active Directory credential passthrough

    2。使用 服务主体和 OAuth 2.0。

    第 1 步:创建并向服务主体授予权限

    如果您选择的访问方法需要具有足够权限的服务主体,而您没有,请按照以下步骤操作:

    1. 创建可以访问资源的 Azure AD 应用程序和服务主体。请注意以下属性:

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

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

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

    2. 注册服务主体,在 Azure Data Lake Storage Gen1 帐户上授予正确的角色分配,例如参与者。

    步骤 2: 使用服务主体和 OAuth 2.0 装载 Azure Data Lake Storage Gen1 资源

    Python 代码:

    configs = {"<prefix>.oauth2.access.token.provider.type": "ClientCredential",
               "<prefix>.oauth2.client.id": "<application-id>",
               "<prefix>.oauth2.credential": dbutils.secrets.get(scope = "<scope-name>", key = "<key-name-for-service-credential>"),
               "<prefix>.oauth2.refresh.url": "https://login.microsoftonline.com/<directory-id>/oauth2/token"}
    
    # Optionally, you can add <directory-name> to the source URI of your mount point.
    dbutils.fs.mount(
      source = "adl://<storage-resource>.azuredatalakestore.net/<directory-name>",
      mount_point = "/mnt/<mount-name>",
      extra_configs = configs)
    

    3。使用服务主体和 OAuth 2.0 直接通过 Spark API 访问

    您可以使用服务主体通过 OAuth 2.0 直接访问 Azure Data Lake Storage Gen1 存储帐户(而不是使用 DBFS 挂载)。

    使用 DataFrame API 访问:

    要从您的 Azure Data Lake Storage Gen1 帐户中读取数据,您可以将 Spark 配置为在您的笔记本中使用具有以下 sn-p 的服务凭据:

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

    参考:Azure Databricks - Azure Data Lake Storage Gen1

    【讨论】:

      猜你喜欢
      • 2019-04-22
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多