Pular para o conteúdo principal

Otimizar o desempenho com o armazenamento em cache no Databricks

O Databricks utiliza o armazenamento em cache em disco para acelerar a leitura de dados, criando cópias de arquivos de dados Parquet remotos no armazenamento local dos 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 obtido de um local remoto. Leituras sucessivas dos mesmos dados são então realizadas localmente, o que resulta em uma velocidade de leitura significativamente maior. O cache funciona para todos os arquivos de dados Parquet (incluindo tabelas Delta Lake).

nota

Em SQL warehouse e Databricks Runtime 14.2 e acima, o comando CACHE SELECT é ignorado. Em vez disso, um algoritmo aprimorado de cache de disco é usado.

Delta cache renomeado para cache de disco

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

Cache de disco vs. cache do Spark

O cache de disco do Databricks é diferente do cache do Apache Spark. A Databricks recomenda o uso de cache de disco automático.

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:

Recurso

cache em disco

Cache do Apache Spark

Armazenado como

Arquivos locais em um nó do worker.

Blocos na memória, mas isso depende do nível de armazenamento.

Aplicado a

Qualquer tabela Parquet armazenada no GCS e em outros sistemas de arquivos.

Qualquer DataFrame ou RDD.

Acionado

Automaticamente, na primeira leitura (se o cache estiver habilitado).

Manualmente, requer alterações de código.

Avaliado

Ociosamente.

Ociosamente.

Disponibilidade

A ativação ou desativação pode ser controlada por meio de configurações, sendo ativada por padrão em certos tipos de nós.

Sempre disponível.

Excluído

Automaticamente no estilo 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 em disco realiza uma detecção automática de novos arquivos de dados, exclusões, modificações ou substituições e faz as atualizações necessárias.Você pode escrever, modificar e excluir dados da tabela sem necessidade de invalidar explicitamente os dados em cache. Todas as entradas obsoletas são automaticamente invalidadas e eliminadas do cache.

Seleção de tipos de instância para usar o cache de disco

O cache em disco funciona em default com todos os tipos de instância que têm SSDlocal.

Nos tipos de instância que suportam o cache de disco, o site Databricks ativa automaticamente o cache de disco nesse clustering e configura os tamanhos de cache apropriados para esse tipo de instância.

O cache de disco é configurado para usar, no máximo, metade do espaço disponível no site local SSD fornecido com os nós worker. Para opções de configuração, consulte Configurar o cache de disco.

Configurar o cache de disco

O uso do disco de cache é definido automaticamente nos tipos de instância com SSD local. A Databricks recomenda que o senhor não defina explicitamente o uso do disco de cache.

nota

Quando um trabalhador é descomissionado, o cache Spark armazenado nesse worker é perdido. Portanto, se a escalabilidade automática estiver ativada, pode haver alguma instabilidade no cache. O Spark precisaria então reler partições ausentes do código-fonte, conforme necessário.

Configurar o uso do disco

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

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

Configuração de exemplo:

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

Ativar ou desativar o cache de disco

O cache em disco funciona em default com todos os tipos de instância que têm SSDlocal.

Para ver a configuração atual do cache de disco, execute o seguinte comando:

Scala
spark.conf.get("spark.databricks.io.cache.enabled")

Para ativar e desativar o cache em disco, execute:

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

Desativar o cache não implica na exclusão dos dados já armazenados no armazenamento local.Em vez disso, ele impede que as consultas adicionem novos dados ao cache e leiam dados do cache.