Montar o armazenamento de objetos de nuvem no Azure Databricks
Importante
As montagens são um padrão de acesso herdado. O Databricks recomenda usar o Catálogo do Unity para gerenciar todo acesso de dados. Consulte Conectar-se ao armazenamento de objetos e serviços na nuvem usando o Catálogo do Unity.
O Azure Databricks permite que os usuários montem o armazenamento de objetos de nuvem no DBFS (Sistema de Arquivos do Databricks) para simplificar os padrões de acesso a dados para usuários que não estão familiarizados com conceitos de nuvem. Os dados montados não funcionam com o Unity Catalog, e a Databricks recomenda deixar de usar montagens e, em vez disso, gerenciar a governança de dados com o Unity Catalog.
Como o Azure Databricks monta o armazenamento de objetos de nuvem?
As montagens do Azure Databricks criam um link entre um workspace e o armazenamento de objetos de nuvem, o que permite interagir com o armazenamento de objetos de nuvem usando caminhos de arquivo familiares relativos ao sistema de arquivos do Databricks. As montagens funcionam criando um alias local no diretório /mnt
que armazena as seguintes informações:
- Local do armazenamento de objetos de nuvem.
- Especificações do driver para se conectar à conta de armazenamento ou contêiner.
- As credenciais de segurança necessárias para acessar os dados.
O que é a sintaxe para montagem de armazenamento?
O source
especifica o URI do armazenamento de objetos (e, opcionalmente, pode codificar credenciais de segurança). O mount_point
especifica o caminho local no diretório /mnt
. Algumas fontes de armazenamento de objetos dão suporte a um argumento encryption_type
opcional. Para alguns padrões de acesso, você pode passar especificações de configuração adicionais como um dicionário para extra_configs
.
Observação
O Databricks recomenda definir a configuração do Spark e do Hadoop específica a uma montagem como opções usando extra_configs
. Isso garante que as configurações estejam vinculadas à montagem em vez do cluster ou da sessão.
dbutils.fs.mount(
source: str,
mount_point: str,
encryption_type: Optional[str] = "",
extra_configs: Optional[dict[str:str]] = None
)
Verifique com seu workspace e administradores de nuvem antes de configurar ou alterar montagens de dados, pois a configuração inadequada pode fornecer acesso não seguro a todos os usuários em seu workspace.
Observação
Além das abordagens descritas neste artigo, você pode automatizar a montagem de um bucket com o provedor Databricks Terraform e o databricks_mount.
Desmontar um ponto de montagem
Para desmontar um ponto de montagem, use o seguinte comando:
dbutils.fs.unmount("/mnt/<mount-name>")
Aviso
Para evitar erros, nunca modifique um ponto de montagem enquanto outros trabalhos estiverem lendo ou gravando nele. Depois de modificar uma montagem, sempre execute dbutils.fs.refreshMounts()
em todos os outros clusters em execução para propagar quaisquer atualizações de montagem. Consultecomando refreshMounts (dbutils.fs.refreshMounts).
Montar o ADLS Gen2 ou o Armazenamento de Blobs com o ABFS
Você pode montar dados em uma conta de armazenamento do Azure usando uma entidade de serviço de aplicativo do Microsoft Entra ID para autenticação. Para obter mais informações, confira Acessar o armazenamento usando uma entidade de serviço e o Microsoft Entra ID (Azure Active Directory).
Importante
- Todos os usuários no workspace do Azure Databricks têm acesso à conta do ADLS Gen2 montada. A entidade de serviço usada para acessar a conta do ADLS Gen2 deve ter acesso somente a essa conta do ADLS Gen2; ela não deve ter acesso a outros recursos do Azure.
- Ao criar um ponto de montagem por meio de um cluster, os usuários desse cluster podem acessar imediatamente o ponto de montagem. Para usar o ponto de montagem em outro cluster em execução, execute
dbutils.fs.refreshMounts()
no cluster em execução a fim de disponibilizar o ponto de montagem recém-criado para uso. - Desmontar um ponto de montagem enquanto os trabalhos estão em execução pode levar a erros. Verifique se os trabalhos de produção não desmontam o armazenamento como parte do processamento.
- Os pontos de montagem que usam segredos não são atualizados automaticamente. Se o armazenamento montado depende de um segredo que é girado, expira ou é excluído, podem ocorrer erros, como
401 Unauthorized
. Para resolver esse erro, você deve desmontar e remontar o armazenamento. - O namespace hierárquico (HNS) deve estar habilitado para montar com êxito uma conta de armazenamento do Azure Data Lake Storage Gen2 usando o ponto de extremidade ABFS.
Execute o seguinte no notebook para autenticar e criar um ponto de montagem.
configs = {"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": "<application-id>",
"fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
"fs.azure.account.oauth2.client.endpoint": "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 = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
mount_point = "/mnt/<mount-name>",
extra_configs = configs)
val configs = Map(
"fs.azure.account.auth.type" -> "OAuth",
"fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id" -> "<application-id>",
"fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope="<scope-name>",key="<service-credential-key-name>"),
"fs.azure.account.oauth2.client.endpoint" -> "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 = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
mountPoint = "/mnt/<mount-name>",
extraConfigs = configs)
Substitua
<application-id>
com a ID de aplicativo (cliente) para o aplicativo do Azure Active Directory.<scope-name>
pelo nome do escopo de segredo do Databricks.<service-credential-key-name>
com o nome da chave que contém o segredo do cliente.<directory-id>
com a ID do Diretório (locatário) ID para o aplicativo do Azure Active Directory.<container-name>
pelo nome de um contêiner na conta de armazenamento do ADLS Gen2.<storage-account-name>
pelo nome da conta de armazenamento do ADLS Gen2.<mount-name>
com o nome do ponto de montagem pretendido no DBFS.