Compartilhar via


Onde o Azure Databricks grava dados?

Este artigo detalha os locais em que o Azure Databricks grava dados com operações e configurações comuns. Como o Azure Databricks fornece um conjunto de ferramentas que abrangem muitas tecnologias e interagem com recursos de nuvem em um modelo de responsabilidade compartilhada, os locais padrão usados para armazenar dados variam com base no ambiente de execução, nas configurações e nas bibliotecas.

As informações neste artigo destinam-se a ajudar você a entender os caminhos padrão para várias operações e como as configurações podem alterar esses padrões. Os administradores de dados que buscam obter diretrizes sobre como configurar e controlar o acesso aos dados devem consultar Governança de dados com o Catálogo do Unity.

Para saber mais sobre como configurar o armazenamento de objetos e outras fontes de dados, confira Conectar-se a fontes de dados.

O que é o armazenamento de objetos?

Na computação em nuvem, armazenamento de objetos ou armazenamento de blobs refere-se a contêineres de armazenamento que mantêm dados como objetos, sendo que cada objeto consiste em dados, metadados e um URI (identificador de recurso exclusivo) de maneira global. As operações de manipulação de dados no armazenamento de objetos geralmente são limitadas ao CRUD (criar, ler, atualizar e excluir) por meio de uma interface de API REST. Algumas ofertas de armazenamento de objetos incluem recursos como controle de versão e gerenciamento do ciclo de vida. O armazenamento de objetos do Azure tem os seguintes benefícios:

  • Alta disponibilidade, durabilidade e confiabilidade.
  • Custo mais baixo para armazenamento em comparação com a maioria das outras opções de armazenamento.
  • Infinitamente escalonável (limitado pela quantidade total de armazenamento disponível em uma determinada região da nuvem).

A maioria dos data lakes baseados em nuvem é criada sobre formatos de dados de código aberto no armazenamento de objetos de nuvem.

Como o Azure Databricks usa o armazenamento de objetos?

O armazenamento de objetos é a principal forma de armazenamento usada pelo Azure Databricks para a maioria das operações. O DBFS (Sistema de Arquivos do Databricks) permite que os usuários do Azure Databricks interajam com arquivos no armazenamento de objetos de maneira semelhante a como fariam em qualquer outro sistema de arquivos. A menos que você configure especificamente uma tabela em um sistema de dados externo, todas as tabelas criadas no Azure Databricks armazenam dados no armazenamento de objetos na nuvem.

Os arquivos Delta Lake armazenados no armazenamento de objetos de nuvem fornecem a base de dados para o Databricks Lakehouse.

O que é o armazenamento em bloco?

Na computação em nuvem, armazenamento em bloco ou armazenamento em disco refere-se a volumes de armazenamento que correspondem a HDDs (unidades de disco rígido) tradicionais ou SSDs (unidades de estado sólido), também conhecidas simplesmente como "discos rígidos". Ao implantar o armazenamento em bloco em um ambiente de computação em nuvem, normalmente uma partição lógica de uma ou mais unidades físicas é implantada. As implementações variam ligeiramente entre ofertas de produtos e fornecedores de nuvem, mas as seguintes características normalmente são encontradas nas implementações:

  • Todas as VMs (máquinas virtuais) exigem um volume de armazenamento de blocos anexado.
  • Os arquivos e programas instalados em um volume de armazenamento de blocos persistem enquanto o volume de armazenamento de blocos persistir.
  • Volumes de armazenamento de blocos geralmente são usados para armazenamento de dados temporário.
  • Os volumes de armazenamento de blocos anexados às VMs geralmente são excluídos junto com as VMs.

Como o Azure Databricks usa o armazenamento em bloco?

Quando você ativa recursos de computação, o Azure Databricks configura e implanta VMs e anexa volumes de armazenamento em blocos. Esse armazenamento em bloco é usado para armazenar arquivos de dados efêmeros durante o tempo de vida da computação. Esses arquivos incluem o sistema operacional e as bibliotecas instaladas, além dos dados usados pelo cache de disco. Embora o Apache Spark use o armazenamento de blocos em segundo plano para obter uma paralelização e carregamento de dados eficiente, a maioria dos códigos executados no Azure Databricks não salva nem carrega dados diretamente no armazenamento de blocos.

Você pode executar código arbitrário, como comandos Python ou Bash, que usam o armazenamento de blocos anexado ao nó do driver. Consulte Trabalhar com arquivos no armazenamento efêmero anexado ao nó do driver.

Onde o Catálogo do Unity armazena arquivos de dados?

O Catálogo do Unity depende de administradores para configurar relacionamentos entre armazenamento em nuvem e objetos relacionais. O local exato onde os dados residem depende de como os administradores configuraram as relações.

Os dados gravados ou carregados em objetos regidos pelo Catálogo do Unity são armazenados em um dos seguintes locais:

Onde o Databricks SQL armazena tabelas de suporte de dados?

Quando você executa uma instrução CREATE TABLE com o Databricks SQL configurado com o Catálogo do Unity, o comportamento padrão é armazenar arquivos de dados em um local de armazenamento gerenciado configurado com o Catálogo do Unity. Consulte Onde o Catálogo do Unity armazena arquivos de dados?.

O catálogo hive_metastore herdado segue regras diferentes. Consulte Trabalhar com o Catálogo Unity e o metastore herdado do Hive.

Onde o Delta Live Tables armazena arquivos de dados?

O Databricks recomenda o uso do Catálogo do Unity ao criar pipelines de DLT. Os dados são armazenados em diretórios dentro do local de armazenamento gerenciado associado ao esquema de destino.

Opcionalmente, você pode configurar pipelines DLT usando o metastore do Hive. Quando configurado com o metastore do Hive, você pode especificar um local de armazenamento no DBFS ou no armazenamento de objetos na nuvem. Se você não especificar um local, um local na raiz do DBFS será atribuído ao pipeline.

Onde o Apache Spark grava arquivos de dados?

O Databricks recomenda o uso de nomes de objetos com o Catálogo do Unity para ler e gravar dados. Você também pode gravar arquivos em volumes do Catálogo do Unity usando o seguinte padrão: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>. Você deve ter privilégios suficientes para carregar, criar, atualizar ou inserir dados em objetos controlados pelo Catálogo do Unity.

Opcionalmente, você pode usar indicadores de recursos universais (URIs) para especificar caminhos para arquivos de dados. Os URIs variam dependendo do provedor de nuvem. Você também deve ter permissões de gravação configuradas para sua computação atual para gravar no armazenamento de objetos na nuvem.

O Azure Databricks usa o sistema de arquivos Databricks para mapear comandos de leitura e gravação do Apache Spark de volta para o armazenamento de objetos na nuvem. Cada espaço de trabalho do Azure Databricks vem com um local de armazenamento raiz do DBFS configurado na conta de nuvem alocada para o espaço de trabalho, que todos os usuários podem acessar para ler e gravar dados. O Databricks não recomenda o uso da raiz DBFS para armazenar dados de produção. Veja O que é DBFS? e Recomendações para trabalhar com raiz DBFS.

Onde os pandas gravam arquivos de dados no Azure Databricks?

No Databricks Runtime 14.0 e superior, o diretório de trabalho atual (CWD) padrão para todas as operações locais de leitura e gravação do Python é o diretório que contém o bloco de anotações. Se você fornecer apenas um nome de arquivo ao salvar um arquivo de dados, o Pandas salvará esse arquivo de dados como um arquivo de espaço de trabalho paralelo ao seu bloco de anotações em execução no momento.

Nem todas as versões do Databricks Runtime oferecem suporte a arquivos de espaço de trabalho, e algumas versões do Databricks Runtime têm comportamento diferente, dependendo se você usa notebooks ou pastas Git. Consulte Qual é o diretório de trabalho padrão atual?.

Onde devo gravar arquivos temporários no Azure Databricks?

Se você precisar gravar arquivos temporários que não deseja manter após o cluster ser desligado, gravar os arquivos temporários em $TEMPDIR produzir um melhor desempenho do que gravar no diretório de trabalho atual (CWD) se o CWD estiver no sistema de arquivos do workspace. Você também pode evitar exceder os limites de tamanho do branch se o código for executado em um repositório. Para obter mais informações, confira Limites de tamanho de arquivo e repositório.

Grave em /local_disk0 se a quantidade de dados a ser gravada for muito grande e você quiser que o armazenamento seja dimensionado automaticamente.