Partilhar via


Onde o Azure Databricks grava dados?

Este artigo detalha locais O Azure Databricks grava dados com operações e configurações diárias. Como o Azure Databricks tem 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, configurações e bibliotecas.

As informações neste artigo destinam-se a ajudá-lo a entender os caminhos padrão para várias operações e como as configurações podem alterar esses padrões. Os administradores e administradores de dados que procuram orientação sobre como configurar e controlar o acesso aos dados devem consultar Governança de dados com o Unity Catalog.

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

O que é armazenamento de objetos?

Na computação em nuvem, o armazenamento de objetos ou armazenamento de blob refere-se a contêineres de armazenamento que mantêm dados como objetos, com cada objeto consistindo em dados, metadados e um URI (identificador de recurso globalmente exclusivo). As operações de manipulação de dados de armazenamento de objetos geralmente se limitam à criação, leitura, atualização e exclusão (CRUD) 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 tem os seguintes benefícios:

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

A maioria dos data lakes baseados na nuvem são construídos com base em formatos de dados de código aberto no armazenamento de objetos na 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. Você configura o acesso ao armazenamento de objetos na nuvem usando credenciais de armazenamento do Unity Catalog e locais externos. Esses locais são usados para armazenar arquivos de dados, tabelas de backup e volumes. Consulte Conectar-se ao armazenamento de objetos na nuvem usando o Unity Catalog.

A menos que você configure especificamente uma tabela em relação a 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 em nuvem fornecem a base de dados para um lago Databricks.

O que é armazenamento em bloco?

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

  • Todas as máquinas virtuais (VMs) exigem um volume de armazenamento de bloco anexado.
  • Os arquivos e programas instalados em um volume de armazenamento em bloco persistem enquanto o volume de armazenamento em bloco persistir.
  • Os volumes de armazenamento em bloco são frequentemente usados para armazenamento temporário de dados.
  • Os volumes de armazenamento em bloco 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 bloco. Esse armazenamento em bloco é usado para armazenar arquivos de dados efêmeros durante o tempo de vida do recurso de computação. Esses arquivos incluem o sistema operacional, bibliotecas instaladas e dados usados pelo cache de disco. Enquanto o Apache Spark usa armazenamento em bloco em segundo plano para paralelização eficiente e carregamento de dados, a maioria do código executado no Azure Databricks não salva ou carrega dados diretamente para bloquear o armazenamento.

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

Onde o Unity Catalog armazena arquivos de dados?

O Unity Catalog depende de administradores para configurar relações 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 Unity Catalog são armazenados em um dos seguintes locais:

Onde o Databricks SQL armazena tabelas de backup de dados?

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

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

Onde o Delta Live Tables armazena arquivos de dados?

A Databricks recomenda o uso do Unity Catalog ao criar pipelines DLT. Os dados são armazenados em diretórios no 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 DBFS será atribuído ao seu pipeline.

Onde o Apache Spark grava arquivos de dados?

O Databricks recomenda o uso de nomes de objetos com o Unity Catalog para ler e gravar dados. Você também pode gravar arquivos em volumes do Catálogo 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 Unity Catalog.

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 seu recurso de 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 tem um local de armazenamento raiz 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. Consulte O que é DBFS? e Recomendações para trabalhar com a 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 padrão (CWD) para todas as operações de leitura e gravação do Python local é 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 suportam arquivos de espaço de trabalho, e algumas versões do Databricks Runtime têm comportamento diferente dependendo se você usa blocos de anotações ou pastas Git. Consulte Qual é o diretório de trabalho atual padrão?.

Onde devo escrever arquivos temporários no Azure Databricks?

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

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