Share via


Montar o armazenamento de objetos da cloud no Azure Databricks

Importante

As montagens são um padrão de acesso herdado. A Databricks recomenda o uso do Unity Catalog para gerenciar todo o acesso aos dados. Consulte Conectar-se ao armazenamento de objetos na nuvem usando o Unity Catalog.

O Azure Databricks permite que os usuários montem o armazenamento de objetos na nuvem no Sistema de Arquivos Databricks (DBFS) para simplificar os padrões de acesso a dados para usuários que não estão familiarizados com os conceitos de nuvem. Os dados montados não funcionam com o Unity Catalog, e o Databricks recomenda migrar do uso de montagens e, em vez disso, gerenciar a governança de dados com o Unity Catalog.

Como o Azure Databricks monta o armazenamento de objetos na nuvem?

As montagens do Azure Databricks criam um link entre um espaço de trabalho e o armazenamento de objetos na nuvem, o que permite que você interaja com o armazenamento de objetos na nuvem usando caminhos de arquivo familiares relativos ao sistema de arquivos Databricks. Monta o trabalho criando um alias local no diretório que armazena /mnt as seguintes informações:

  • Localização do armazenamento de objetos na nuvem.
  • Especificações do driver para se conectar à conta de armazenamento ou contêiner.
  • Credenciais de segurança necessárias para acessar os dados.

Qual é a sintaxe para o armazenamento de montagem?

O source especifica o URI do armazenamento de objetos (e pode, opcionalmente, codificar credenciais de segurança). O mount_point especifica o caminho local no /mnt diretório. Algumas fontes de armazenamento de objetos suportam um argumento opcional encryption_type . Para alguns padrões de acesso, você pode passar especificações de configuração adicionais como um dicionário para extra_configs.

Nota

O Databricks recomenda definir a configuração do Spark e do Hadoop específica da montagem como opções usando extra_configso . 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 seus administradores de espaço de trabalho e 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 espaço de trabalho.

Nota

Além das abordagens descritas neste artigo, você pode automatizar a montagem de um bucket com o provedor Databricks Terraform e 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 estão 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. Consulte o comando refreshMounts (dbutils.fs.refreshMounts).

Monte ADLS Gen2 ou armazenamento de Blob com ABFS

Você pode montar dados em uma conta de armazenamento do Azure usando uma entidade de serviço de aplicativo Microsoft Entra ID (anteriormente Azure Ative Directory) para autenticação. Para obter mais informações, consulte Acessar armazenamento usando uma entidade de serviço & Microsoft Entra ID(Azure Ative Directory).

Importante

  • Todos os usuários no espaço de trabalho do Azure Databricks têm acesso à conta ADLS Gen2 montada. A entidade de serviço que você usa para acessar a conta ADLS Gen2 deve ter acesso apenas a essa conta ADLS Gen2; ele não deve ter acesso a outros recursos do Azure.
  • Quando você cria um ponto de montagem por meio de um cluster, os usuários do cluster podem acessar imediatamente o ponto de montagem. Para utilizar o ponto de montagem noutro cluster em execução, deve executar dbutils.fs.refreshMounts() nesse cluster em execução para disponibilizar o ponto de montagem recentemente criado para utilização.
  • Desmontar um ponto de montagem enquanto os trabalhos estão em execução pode levar a erros. Certifique-se de que os trabalhos de produção não desmontem o armazenamento como parte do processamento.
  • Os pontos de montagem que utilizam segredos não são atualizados automaticamente. Se o armazenamento montado depender de um segredo que é girado, expira ou é excluído, erros podem ocorrer, como 401 Unauthorized. Para resolver esse erro, você deve desmontar e remontar o armazenamento.
  • O namespace hierárquico (HNS) deve ser 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 seu bloco de notas 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)

Replace

  • <application-id>com a ID do Aplicativo (cliente) para o aplicativo Azure Ative Directory.
  • <scope-name> com o nome do escopo secreto Databricks.
  • <service-credential-key-name> com o nome da chave que contém o segredo do cliente.
  • <directory-id>com a ID de diretório (locatário) para o aplicativo Azure Ative Directory.
  • <container-name> com o nome de um contêiner na conta de armazenamento ADLS Gen2.
  • <storage-account-name> com o nome da conta de armazenamento ADLS Gen2.
  • <mount-name> com o nome do ponto de montagem pretendido no DBFS.