Compartilhar via


Otimizar o desempenho com armazenamento em cache no Azure Databricks

O Azure Databricks usa o armazenamento em cache de disco para acelerar as leituras de dados, criando cópias de arquivos de dados Parquet remotos no armazenamento local de nós usando um formato de dados intermediário rápido. Os dados são armazenados em cache automaticamente sempre que um arquivo precisa ser buscado de um local remoto. As leituras sucessivas dos mesmos dados são executadas localmente, o que resulta em uma velocidade de leitura significativamente aprimorada. O cache funciona para todos os arquivos de dados Parquet (incluindo tabelas Delta Lake).

Observação

Nos SQL Warehouses e no Databricks Runtime 14.2 e superior, o comando CACHE SELECT é ignorado. Em vez disso, é usado um algoritmo de cache de disco aprimorado.

Cache delta renomeado para cache de disco

O cache de disco no Azure Databricks anteriormente era chamado de cache Delta e cache DBIO. O comportamento do cache de disco é um recurso proprietário do Azure Databricks. Essa alteração de nome busca resolver a confusão de ele que fazia parte do protocolo Delta Lake.

Cache de disco vs. Cache do Spark

O cache de disco do Azure Databricks difere do armazenamento em cache do Apache Spark. O Azure Databricks recomenda o uso do cache de disco automático.

A seguinte tabela resume as principais diferenças entre o armazenamento em cache de disco e do Apache Spark para que você possa escolher a melhor ferramenta para seu fluxo de trabalho:

Recurso Cache de disco Cache do Apache Spark
Armazenado como Arquivos locais em um nó de trabalho. Blocos na memória, mas depende do nível de armazenamento.
Aplicado a Qualquer tabela Parquet armazenada no ABFS (Azure Blob File System) e em outros sistemas de arquivos. Qualquer DataFrame ou RDD.
Disparado Automaticamente, na primeira leitura (se o cache estiver habilitado). Manualmente, exige alterações no código.
Avaliado Ociosamente. Ociosamente.
Disponibilidade Pode ser habilitado ou desabilitado com sinalizadores de configuração, habilitado por padrão em determinados tipos de nó. Sempre disponível.
Removido Automaticamente no modo LRU ou em qualquer alteração de arquivo, manualmente ao reiniciar um cluster. Automaticamente no modo LRU, manualmente com unpersist.

Consistência do cache de disco

O cache de disco detecta automaticamente quando os arquivos de dados são criados, excluídos, modificados ou substituídos e atualiza seu conteúdo adequadamente. Você pode gravar, modificar e excluir dados de tabela sem a necessidade de invalidar explicitamente os dados armazenados em cache. Todas as entradas obsoletas são automaticamente invalidadas e removidas do cache.

Selecionar tipos de instância para usar o cache de disco

A maneira recomendada (e mais fácil) de usar o armazenamento em cache de disco é escolher um tipo de trabalho com volumes SSD ao configurar o cluster. Esses trabalhos são habilitados e configurados para o armazenamento em cache de disco.

O cache de disco está configurado para usar no máximo a metade do espaço disponível nos SSDs locais fornecidos com os nós de trabalho. Para obter opções de configuração, veja Configurar o cache de disco.

Configurar o cache de disco

O Azure Databricks recomenda que você escolha tipos de instância de trabalho aceleradas por cache para a sua computação. Essas instâncias são configuradas automaticamente de maneira ideal para o cache de disco.

Observação

Quando uma função de trabalho é desativada, o cache do Spark armazenado nela é perdido. Portanto, se o dimensionamento automático estiver habilitado, haverá alguma instabilidade com o cache. O Spark precisaria reler as partições ausentes da fonte conforme necessário.

Configurar o uso do disco

Para configurar como o cache de disco usa o armazenamento local dos nós de trabalho, especifique as seguintes definições da configuração do Spark durante a criação do cluster:

  • spark.databricks.io.cache.maxDiskUsage: espaço em disco por nó reservado para dados armazenados em cache em bytes
  • spark.databricks.io.cache.maxMetaDataCache: espaço em disco por nó reservado para metadados armazenados em cache em bytes
  • spark.databricks.io.cache.compression.enabled: caso os dados armazenados em cache sejam armazenados em formato compactado

Exemplo de configuração:

spark.databricks.io.cache.maxDiskUsage 50g
spark.databricks.io.cache.maxMetaDataCache 1g
spark.databricks.io.cache.compression.enabled false

Habilitar ou desabilitar o cache de disco

Para habilitar e desabilitar o cache de disco, execute:

spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")

Desabilitar o cache não resulta em descartar os dados que já estejam no armazenamento local. Em vez disso, ele impede que as consultas adicionem novos dados ao cache e leiam dados do cache.