Conecte-se a Azure Data Lake Storage Gen2 e Blob Storage
Este artigo explica como conectar-se ao Azure Data Lake Storage Gen2 e ao Blob Storage no Databricks.
- 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 Azure anunciou a aposentadoria pendente do Azure Data Lake Storage Gen1. A Databricks recomenda a migração de todos os dados do Azure Data Lake Storage Gen1 para o Azure Data Lake Storage Gen2. Se o senhor ainda não tiver feito a migração, consulte Acessando o Azure Data Lake Storage Gen1 da Databricks.
Conecte-se ao Azure Data Lake Storage Gen2 ou Blob Storage usando as credenciais do Azure
As credenciais a seguir podem ser usadas para acessar o Azure Data Lake Storage Gen2 ou Blob Storage:
-
OAuth 2.0 com uma Microsoft Entra ID entidade de serviço : Databricks recomenda usar a Microsoft Entra ID entidade de serviço para se conectar a Azure Data Lake Storage Gen2. Para criar uma entidade de serviço Microsoft Entra ID e fornecer a ela acesso à conta de armazenamento Azure, consulte Acessar o armazenamento usando uma entidade de serviço & Microsoft Entra ID(Azure Active Directory).
Para criar uma entidade de serviço do Microsoft Entra ID, o senhor deve ter a função
Application Administrator
ou a permissãoApplication.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.
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 exibir as chaves de acesso de uma conta, você deve ter a função de proprietário, colaborador ou serviço de operador de chave de conta de armazenamento na conta de armazenamento.
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.
Defina as propriedades do Spark para configurar as credenciais do Azure para acessar o armazenamento do Azure
O senhor pode definir as propriedades do Spark para configurar as credenciais do Azure para acessar o armazenamento do Azure. O escopo das credenciais pode ser definido para um clustering ou um Notebook. Use o controle de acesso ao clustering e o controle de acesso ao Notebook juntos para proteger o acesso ao armazenamento Azure. Consulte Permissões de computação e Colaborar usando o Databricks Notebook.
Para definir as propriedades do Spark, use o seguinte trecho na configuração do Spark de um cluster ou em um notebook:
- Azure service principal
- SAS tokens
- Account key
Use the following format to set the cluster Spark configuration:
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
You can use spark.conf.set
in notebooks, as shown in the following example:
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")
Replace
<secret-scope>
with the Databricks secret scope name.<service-credential-key>
with the name of the key containing the client secret.<storage-account>
with the name of the Azure storage account.<application-id>
with the Application (client) ID for the Microsoft Entra ID application.<directory-id>
with the Directory (tenant) ID for the Microsoft Entra ID application.
You can configure SAS tokens for multiple storage accounts in the same Spark session.
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
spark.conf.set("fs.azure.sas.fixed.token.<storage-account>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope>", key="<sas-token-key>"))
Replace
<storage-account>
with the Azure Storage account name.<scope>
with the Databricks secret scope name.<sas-token-key>
with the name of the key containing the Azure storage SAS token.
spark.conf.set(
"fs.azure.account.key.<storage-account>.dfs.core.windows.net",
dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))
Replace
<storage-account>
with the Azure Storage account name.<scope>
with the Databricks secret scope name.<storage-account-access-key>
with the name of the key containing the Azure storage account access key.
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.
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>")
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 Gen2 OAuth 2.0 com Microsoft Entra ID (anteriormente Azure Active Directory) entidade de serviço Notebook
Problemas conhecidos do Azure Data Lake Storage Gen2
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á habilitado, você não precisa criar contêineres por meio do portal do Azure. Se você observar esse problema, exclua o contêiner Blob pelo portal do Azure. Depois de alguns minutos, você poderá acessar o contêiner. Como alternativa, você pode alterar o URI do abfss
para usar outro contêiner, desde que esse contêiner não seja criado pelo portal do Azure.
Consulte Problemas conhecidos com o Azure Data Lake Storage Gen2 na documentação da Microsoft.
Padrões obsoletos para armazenamento e acesso a dados do Databricks
Os padrões de armazenamento obsoletos são os seguintes:
- Databricks Não é mais recomendável montar locais de dados externos em Databricks Filesystem. Consulte Montagem de armazenamento de objetos em nuvem na Databricks.