Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ler dados do armazenamento de objetos na nuvem é mais lento do que ler do disco local. Sem cache, consultas e notebooks que leem repetidamente os mesmos arquivos de dados Parquet os recuperam do armazenamento de objetos na nuvem sempre que os leem.
Azure Databricks usa cache de disco para acelerar as leituras de dados. Quando um nó busca um arquivo de dados Parquet do armazenamento remoto, ele armazena automaticamente uma cópia em seu armazenamento local em um formato intermediário rápido. Leituras posteriores dos mesmos dados são executadas localmente e são significativamente mais rápidas. 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.
Práticas Recomendadas
O cache de disco ajuda principalmente com cargas de trabalho que leem os mesmos dados muitas vezes, como consultas repetidas ou iterativas nas mesmas tabelas. O Azure Databricks habilita isso automaticamente em tipos de instância worker que o suportam. Para ajudar o cache do disco a acelerar as leituras, siga estas práticas:
- Escolha um tipo de instância worker que suporte cache de disco. Consulte Selecionando tipos de instância para utilizar o cache de disco.
- Use o cache de disco em vez do cache do Apache Spark para leituras repetidas dos dados do Parquet e do Delta Lake. Consulte Comparar o cache do disco com o cache do Spark.
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 que isso fazia parte do protocolo Delta Lake.
Compare o cache do disco com o cache do Spark
O cache de disco do Azure Databricks difere do armazenamento em cache do Apache Spark. O Databricks recomenda o uso de cache automático de disco.
A seguinte tabela resume as principais diferenças entre cache em disco e cache 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 | Preguiçosamente. | Preguiçosamente. |
| Disponibilidade | Ativado por padrão em certos tipos de nós. Você habilita ou desativa com flags de configuração. | 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. |
Em computação serverless, df.cache() funciona de forma diferente do cache do Apache Spark nesta tabela. Consulte Armazenar DataFrames em cache na computação sem servidor.
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 worker com volumes SSD ao configurar o cluster. Esses workers 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 Databricks recomenda que você escolha tipos de instância de worker com aceleração por cache para 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 estas configurações de Spark configuration 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: os dados em cache devem ser 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 ver a configuração atual do cache do disco, execute:
spark.conf.get("spark.databricks.io.cache.enabled")
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.