Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Ler dados a partir do armazenamento de objetos na cloud é mais lento do que ler a partir do disco local. Sem cache, consultas e notebooks que leem os mesmos ficheiros de dados Parquet obtêm-nos repetidamente do armazenamento de objetos na nuvem todas as vezes.
O Azure Databricks utiliza cache de disco para acelerar as leituras de dados. Quando um nó recupera um ficheiro de dados Parquet a partir de armazenamento remoto, armazena automaticamente uma cópia no seu armazenamento local num formato intermédio rápido. As leituras posteriores dos mesmos dados são feitas localmente e são significativamente mais rápidas. A cache funciona para todos os ficheiros de dados Parquet, incluindo as tabelas Delta Lake.
Nota
Em armazéns SQL e Databricks Runtime 14.2 e superior, o CACHE SELECT comando é ignorado. Em vez disso, é usado um algoritmo de cache de disco aprimorado.
Melhores práticas
A cache de disco ajuda sobretudo com cargas de trabalho que leem os mesmos dados várias vezes, como consultas repetidas ou iterativas nas mesmas tabelas. O Azure Databricks ativa-o automaticamente nos tipos de instância worker que o suportam. Para ajudar a cache do disco a acelerar as leituras, siga estas práticas:
- Escolha um tipo de instância worker que suporte cache de disco. Consulte Seleção de tipos de instância para utilizar o cache em disco.
- Utilize a cache do disco em vez da cache do Apache Spark para leituras repetidas dos dados do Parquet e do Delta Lake. Veja Compare a cache do disco e a cache do Spark.
A cache delta foi mudada a designação para cache de disco
O cache de disco no Azure Databricks era anteriormente conhecido como cache Delta e cache DBIO. O comportamento de cache de disco é um recurso proprietário do Azure Databricks. Esta mudança de nome procura resolver a confusão de que fosse parte do protocolo Delta Lake.
Compare a cache do disco e a cache do Spark
O cache de disco do Azure Databricks difere do cache do Apache Spark. A Databricks recomenda a utilização da cache automática de disco.
A tabela a seguir resume as principais diferenças entre o disco e o cache do Apache Spark para que você possa escolher a melhor ferramenta para seu fluxo de trabalho:
| Funcionalidade | 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 em ABFS e outros sistemas de arquivos. | Qualquer DataFrame ou RDD. |
| Desencadeado | Automaticamente, na primeira leitura (se o cache estiver habilitado). | Manualmente, requer alterações ao código. |
| Avaliado | Preguiçosamente. | Preguiçosamente. |
| Disponibilidade | Ativado por defeito em certos tipos de nós. Podes ativá-lo ou desativá-lo com flags de configuração. | Sempre disponível. |
| Expulso | Automaticamente na forma LRU ou em qualquer alteração de arquivo, manualmente ao reiniciar um cluster. | Automaticamente à moda LRU, manualmente com unpersist. |
Em computação serverless, df.cache() funciona de forma diferente da cache do Apache Spark nesta tabela. Ver Colocar DataFrames em cache na computação sem servidor.
Consistência do cache de disco
A cache de disco deteta automaticamente quando os ficheiros de dados são criados, eliminados, modificados ou substituídos e atualiza o respetivo conteúdo em conformidade. Você pode gravar, modificar e excluir dados da tabela sem a necessidade de invalidar explicitamente os dados armazenados em cache. Quaisquer entradas obsoletas são automaticamente invalidadas e removidas do cache.
Selecionando tipos de instância para usar o cache de disco
A maneira recomendada (e mais fácil) de usar o cache de disco é escolher um tipo de trabalho com volumes SSD ao configurar o cluster. Esses processos de trabalho são habilitados e configurados para cache de disco.
O cache de disco é configurado para usar no máximo metade do espaço disponível nos SSDs locais fornecidos com os nós de trabalho. Para obter opções de configuração, consulte Configurar a cache de disco.
Configurar o cache de disco
A Databricks recomenda que escolha tipos de instância de trabalho com aceleração de cache para a sua computação. Essas instâncias são configuradas automaticamente de forma ideal para o cache de disco.
Nota
Quando um worker é desativado, a cache do Spark armazenada nesse worker é perdida. Portanto, se o dimensionamento automático estiver habilitado, haverá alguma instabilidade com o cache. O Spark precisaria então reler partições ausentes da fonte de dados, conforme necessário.
Configurar o uso do disco
Para configurar como a cache do disco utiliza o armazenamento local dos nós de trabalho, especifique estas definições de 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: os dados armazenados 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 desativar a cache de disco
Para ver a definição atual da 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]")
A desativação do cache não resulta na eliminação dos dados que já estão no armazenamento local. Em vez disso, impede que as consultas adicionem novos dados ao cache e leiam dados do cache.