Onde o Databricks grava dados?

Este artigo detalha os locais onde o Databricks grava dados com operações e configurações comuns. Como o Databricks fornece um conjunto de ferramentas que abrange muitas tecnologias e interage com recursos clouds em um modelo de responsabilidade compartilhada, os locais default usados para armazenar dados variam de acordo com o ambiente de execução, configurações e bibliotecas.

As informações contidas neste artigo têm o objetivo de ajudá-lo a entender os caminhos do default para várias operações e como as configurações podem alterar esse padrão. O senhor deve consultar a seção Governança de dados com o Unity Catalog para obter orientações sobre como configurar e controlar o acesso aos dados.

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

O que é armazenamento de objetos?

Na computação clouds , armazenamento de objetos ou armazenamento de blobs refere-se a contêineres de armazenamento que mantêm dados como objetos, com cada objeto consistindo em dados, metadados e um identificador de recurso (URI) globalmente exclusivo. As operações de manipulação de dados no armazenamento de objetos geralmente são limitadas à criação, leitura, atualização e exclusão (CRUD) por meio de uma interface API REST. Algumas ofertas de armazenamento de objetos incluem recursos como versionamento e gerenciamento de ciclo de vida. O armazenamento de objetos tem os seguintes benefícios:

  • Alta disponibilidade, durabilidade e confiabilidade.

  • Menor custo de armazenamento 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 das clouds).

A maioria cloudsdos baseados em data lake são construídos com base em formatos de dados de código aberto no armazenamento de objetos em .clouds

Como o Databricks usa o armazenamento de objetos?

O armazenamento de objetos é a principal forma de armazenamento usada pelo Databricks para a maioria das operações. O Databricks Filesystem (DBFS) permite que os usuários do Databricks interajam com arquivos no armazenamento de objetos da mesma forma que 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 Databricks armazenam dados no armazenamento de objetos em clouds .

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

O que é armazenamento em bloco?

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

  • Todas as máquinas virtuais (VMs) requerem um volume de armazenamento em bloco anexado.

  • Arquivos e programas instalados em um volume de armazenamento em blocos persistem enquanto o volume de armazenamento em blocos 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 juntamente com as VMs.

Como o Databricks usa o armazenamento em bloco?

Ao ativar o recurso compute , o 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 a vida útil da compute. Esses arquivos incluem o sistema operacional e a biblioteca instalada, além dos dados utilizados pelo cache de disco. Embora o Apache Spark use armazenamento de blocos em segundo plano para paralelização e carregamento de dados eficientes, a maior parte da execução de código no Databricks não salva ou carrega dados diretamente no armazenamento de blocos.

Você pode executar código arbitrário, como comando Python ou Bash, que usa o armazenamento de bloco anexado ao nó do driver. Consulte Trabalhar com arquivos em armazenamento temporário anexado ao nó do driver.

Onde o Unity Catalog armazena arquivos de dados?

O Unity Catalog depende de administradores para configurar relacionamentos entre armazenamento clouds e objetos relacionais. O local exato onde os dados residem depende de como os administradores configuraram as relações.

Os dados gravados ou upload em objetos regidos pelo Unity Catalog 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 Unity Catalog, o comportamento default é 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 legado hive_metastore segue regras diferentes. Consulte Trabalhar com Unity Catalog e o Hive metastore.

Onde o Delta Live Tables armazena arquivos de dados?

A Databricks recomenda usar o Unity Catalog ao criar pipelines DLT. Os dados são armazenados em diretórios dentro do local de armazenamento de gerenciamento associado ao esquema de destino.

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

Onde o Apache Spark grava arquivos de dados?

A Databricks recomenda a utilização de nomes de objetos com Unity Catalog para leitura e escrita de dados. Você também pode gravar arquivos em volumes do Unity Catalog usando o seguinte padrão: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>. Você deve ter privilégios suficientes para fazer upload, criar, atualizar ou inserir dados em objetos controlados pelo Unity Catalog.

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

Databricks usa o Databricks Filesystem para mapear comandos de leitura e gravação do Apache Spark de volta para armazenamento de objetos clouds . Cada workspace do Databricks vem com um local de armazenamento DBFS root configurado em uma account clouds alocada para o workspace, que todos os usuários podem acessar para leitura e gravação de dados. A Databricks não recomenda a utilização da DBFS root para armazenar quaisquer dados de produção. Consulte O que é o sistema de arquivos Databricks (DBFS)? e Recomendações para trabalhar com DBFS root.

Onde os pandas gravam arquivos de dados no Databricks?

No Databricks Runtime 14.0 e acima, o diretório de trabalho atual (CWD) default para todas as operações locais de leitura e gravação do Python é o diretório que contém o Notebook. 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 workspace paralelo ao Notebook em execução no momento.

Nem todas as versões do Databricks Runtime suportam arquivos workspace e algumas versões do Databricks Runtime têm comportamento diferente, dependendo do uso de pastas do Notebook ou do Git. Consulte Qual é o diretório de trabalho atual do default .

Onde devo escrever arquivos temporários no Databricks?

Se o senhor precisar gravar arquivos temporários que não deseja manter após o encerramento dos clusters, gravar os arquivos temporários em $TEMPDIR produz melhor desempenho do que gravar no diretório de trabalho atual (CWD) se o CWD estiver no sistema de arquivos workspace. O senhor também pode evitar exceder os limites de tamanho de ramificação se a execução do código 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 ser gravada for muito grande e o senhor quiser que o armazenamento seja autoscale.