Pular para o conteúdo principal

Conecte-se a Azure data lake Storage e Blob Storage

atenção

Este artigo descreve um padrão herdado para acessar o Azure Data Lake Storage (ADLS) e o Blob Storage de um workspace Databricks que não é do Azure, o qual ignora a governança do Unity Catalog. Use-o somente se a governança do Unity Catalog não for necessária para os dados nesta conta de armazenamento.

Este artigo explica como se conectar ao Azure data lake Storage e Blob Storage a partir do Databricks.

nota

O driver herdado do Blob de armazenamento do Windows Azure (WASB) foi descontinuado. O ABFS tem vários benefícios em relação ao WASB. Consulte a documentação do Azure sobre ABFS. Para obter a documentação sobre como trabalhar com o driver WASB legado, consulte Conectar-se ao armazenamento Azure Blob com WASB (legado).

O passo 1: registrar um aplicativo do Microsoft Entra ID

O registro de um aplicativo com o Microsoft Entra ID cria uma entidade de serviço para fornecer acesso a contas de armazenamento do Azure.

Para registrar um aplicativo Microsoft Entra ID, você deve ter a função Application Administrator ou a permissão Application.ReadWrite.All no Microsoft Entra ID.

  1. No portal do Azure, acesse o **serviço Microsoft Entra ID**.
  2. Em **Gerenciar**, clique em **Registros de Aplicativos**.
  3. Clique em Novo registro . Insira um nome para o aplicativo e clique em registro .
  4. Clique em Certificados e segredos .
  5. Clique em + Novo segredo do cliente .
  6. Adicione uma descrição para o segredo e clique em **Adicionar**.
  7. Copiar e salvar o valor para o novo segredo.
  8. Na visão geral de registro do aplicativo, copie e salve a **ID do Aplicativo (cliente)** e a **ID do diretório (tenant)**.

Passo 2: Atribuir funções à entidade de serviço

Você controla o acesso a recursos de armazenamento atribuindo funções a um registro de aplicativo do Microsoft Entra ID associado à conta de armazenamento. Pode ser necessário atribuir outras funções dependendo dos requisitos específicos.

Para atribuir funções em uma conta de armazenamento, você deve ter a função Azure RBAC de Proprietário ou de Administrador de Acesso do Usuário na conta de armazenamento.

  1. No portal do Azure, acesse o serviço de Contas de Armazenamento .
  2. Selecione uma conta de armazenamento do Azure a ser usada com este registro de aplicativo.
  3. Clique em **Controle de acesso (IAM)**.
  4. Clique em **+ Adicionar** e selecione **Adicionar atribuição de função** no menu dropdown.
  5. Defina o campo **Selecionar** para o nome do aplicativo Microsoft Entra ID e defina a **Função** como **Colaborador de Dados de Blob de Armazenamento**.
  6. Clique em Salvar .

Passo 3: configurar credenciais do Azure no Databricks

Configure o cluster Databricks ou Notebook com as credenciais para a account de armazenamento do Azure que deseja acessar.

Tipos de credencial compatíveis e armazenamento de segredos

As seguintes credenciais podem ser usadas para acessar o data lake Storage ou o Blob Storage do Azure:

  • OAuth 2.0 com uma entidade de serviço do Microsoft Entra ID : o Databricks recomenda usar entidades de serviço do Microsoft Entra ID para se conectar ao Azure Data Lake Storage. Para criar uma entidade de serviço do Microsoft Entra ID e fornecer a ela acesso às contas de armazenamento do Azure, conclua os passos 1 e 2 acima.

    Para criar uma entidade de serviço do Microsoft Entra ID, o senhor deve ter a função Application Administrator ou a permissão Application.ReadWrite.All no Microsoft Entra ID. Para atribuir funções em um storage account, o senhor deve ser um Owner ou um usuário com a função User Access Administrator Azure RBAC no storage account.

importante

O armazenamento de blob não é compatível com Microsoft Entra ID entidade de serviço.

  • Assinaturas de acesso compartilhado (SAS) : você pode usar tokens SAS de armazenamento para acessar o armazenamento do Azure. Com o SAS, é possível restringir o acesso a uma conta de armazenamento usando tokens temporários com controle de acesso refinado.

    Você só pode conceder as permissões de token do SAS que tiver na conta de armazenamento, contêiner ou arquivo por conta própria.

  • chave da conta : o senhor pode usar a chave de acesso do Storage account para gerenciar o acesso ao Storage Azure. A chave de acesso do Storage account fornece acesso total à configuração de um storage account, bem como aos dados. Databricks recomenda o uso de uma entidade de serviço Microsoft Entra ID ou de tokens SAS para se conectar ao armazenamento Azure em vez da chave account.

    Para view a chave de acesso de um account, o senhor deve ter a função Owner, Contributor ou Storage account key Operator serviço no armazenamento account.

Databricks recomenda o uso do Secret Scope para armazenar todas as credenciais. O senhor pode conceder a usuários, entidades de serviço e grupos em seu workspace acesso para ler o Secret Scope. Isso protege as credenciais do Azure e permite que os usuários acessem o armazenamento do Azure. Para criar um escopo secreto, consulte Gerenciar escopo secreto.

Definir propriedades do Spark para configurar credenciais do Azure

Você pode definir propriedades do Spark para configurar credenciais do Azure para acessar o armazenamento do Azure. As credenciais podem ter escopo de um cluster ou um Notebook. Utilize o controle de acesso ao cluster e o controle de acesso ao Notebook juntos para proteger o acesso ao armazenamento do Azure. Consulte Permissões de compute e Colaborar usando notebooks do Databricks.

Para definir as propriedades do Spark, use o seguinte snippet na configuração do Spark de um clustering ou em um Notebook:

Use o seguinte formato para definir a configuração do cluster do Spark:

ini
spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token

Você pode utilizar o spark.conf.set em notebooks, como mostrado no exemplo a seguir:

Python
service_credential = dbutils.secrets.get(scope="<secret-scope>",key="<service-credential-key>")

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")

Substituir

  • <secret-scope> pelo nome do secret scope do Databricks.
  • <service-credential-key> pelo nome da chave que contém o segredo do cliente.
  • <storage-account> pelo nome da conta de armazenamento do Azure.
  • <application-id> com a ID do aplicativo (cliente) para a aplicação Microsoft Entra ID.
  • <directory-id> com o ID do diretório (tenant) para a aplicação Microsoft Entra ID.

O passo 4: Acessar o armazenamento do Azure

Depois de configurar corretamente as credenciais para acessar seu contêiner de armazenamento do Azure, você pode interagir com os recursos na conta de armazenamento usando URIs. A Databricks recomenda usar o driver abfss para maior segurança.

Python
spark.read.load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")

dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
SQL
CREATE TABLE <database-name>.<table-name>;

COPY INTO <database-name>.<table-name>
FROM 'abfss://container@storageAccount.dfs.core.windows.net/path/to/folder'
FILEFORMAT = CSV
COPY_OPTIONS ('mergeSchema' = 'true');

Exemplo de notebook

ADLS OAuth 2.0 com Microsoft Entra ID (anteriormente Azure Active Directory) entidade de serviço Notebook

Abrir notebook em uma nova aba

Azure Data Lake Storage Problemas conhecidos

Se o senhor tentar acessar um contêiner de armazenamento criado por meio do portal do Azure, poderá receber o seguinte erro:

StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.

Quando um namespace hierárquico está ativado, não é necessário criar contêineres por meio do portal do Azure. Se o senhor encontrar esse problema, exclua o contêiner Blob por meio do portal do Azure. Depois de alguns minutos, você pode acessar o contêiner. Como alternativa, o senhor pode alterar o URI do abfss para usar um contêiner diferente, desde que esse contêiner não seja criado por meio do portal do Azure.

Consulte Problemas conhecidos com o Azure data lake Storage na documentação do Microsoft.

Padrões obsoletos para armazenamento e acesso a dados do Databricks

Os padrões de armazenamento obsoletos são os seguintes: