Compartilhar via


Cache inteligente no Azure Synapse Analytics

O Cache inteligente funciona perfeitamente em segundo plano e armazena dados em cache para ajudar a acelerar a execução do Spark conforme ele faz leituras no data lake do ADLS Gen2. Além disso, ele detecta alterações feitas nos arquivos subjacentes e atualiza os arquivos no cache automaticamente, fornecendo os dados mais recentes. E quando o tamanho do cache atinge o limite, ele libera automaticamente os dados menos lidos para abrir espaço para dados mais recentes. Esse recurso reduz o custo total de propriedade porque melhora até 65% o desempenho das leituras seguintes dos arquivos Parquet e 50% dos arquivos CSV armazenados no cache disponível.

Ao consultar um arquivo ou tabela do data lake, o mecanismo Apache Spark no Synapse faz uma chamada para o armazenamento remoto do ADLS Gen2 para ler os arquivos subjacentes. Com cada solicitação de consulta para ler os mesmos dados, o mecanismo Spark deve fazer uma chamada para o armazenamento remoto do ADLS Gen2. Esse processo redundante adiciona latência ao tempo total de processamento. O Spark fornece um recurso de cache em que você precisa definir e liberar o cache manualmente para minimizar a latência e melhorar o desempenho geral. Mas, se os dados subjacentes são alterados, os resultados podem conter dados obsoletos.

O Cache inteligente do Synapse simplifica esse processo armazenando em cache automaticamente cada leitura dentro do espaço de armazenamento em cache alocado em cada nó do Spark. Cada solicitação de arquivo verifica se o arquivo existe no cache e compara a marca do armazenamento remoto para determinar se o arquivo está obsoleto. Se o arquivo não existe ou está obsoleto, o Spark lê o arquivo e o armazenará no cache. Quando o cache fica cheio, o arquivo com o último tempo de acesso mais antigo é removido para que arquivos mais recentes sejam aceitos.

O cache do Synapse é um único cache por nó. Se você está usando um nó de tamanho médio e executa com dois executores pequenos em um único nó de tamanho médio, esses dois executores compartilham o mesmo cache.

Habilitar ou desabilitar o cache

O tamanho do cache pode ser ajustado com base na porcentagem do tamanho total do disco disponível para cada pool do Apache Spark. Por padrão, o cache é definido como desabilitado. Para habilitá-lo, basta mover a barra de controle deslizante de 0 (desabilitado) para a porcentagem desejada para o tamanho do cache. Reservamos um mínimo de 20% do espaço em disco disponível para embaralhamentos de dados. Para embaralhar cargas de trabalho intensivas, você pode reduzir o tamanho do cache ou desabilitá-lo. Recomendamos começar com um tamanho de cache de 50% e ajustar conforme necessário. Observe que, se a carga de trabalho exige muito espaço em disco no SSD local para embaralhar ou armazenar em cache o RDD, é recomendável reduzir o tamanho do cache para diminuir a chance de falha devido ao armazenamento insuficiente. O tamanho real do armazenamento disponível e o tamanho do cache de cada nó depende da família de nós e do tamanho deles.

Habilitar o cache em novos pools do Spark

Ao criar um novo pool do Spark, navegue na guia configurações adicionais para encontrar o controle deslizante do Cache inteligente que você pode mover para o tamanho que quiser para habilitar o recurso.

How to enable Intelligent Cache during new Spark pools creation

Habilitar/Desabilitar o cache em Pools do Spark existentes

No caso de Pools do Spark existentes, navegue até as Configurações de dimensionamento do pool do Apache Spark escolhido. Para habilitar o cache, mova o controle deslizante para um valor maior que 0. Para desabilitar o cache, mova o controle deslizante para 0.

How to enable or disable Intelligent Cache for existing Spark pools

Alterar o tamanho do cache em pools do Spark existentes

Para alterar o tamanho do Cache inteligente de um pool, você precisa forçar uma reinicialização quando o pool tem sessões ativas. Se o pool do Spark tem uma sessão ativa, ele mostra Forçar novas configurações. Clique na caixa de seleção e selecione Aplicar para reiniciar a sessão automaticamente.

Force restarting a session after changing Intelligent Cache setting

Habilitar e desabilitar o cache dentro da sessão

Para desabilitar o Cache inteligente em uma sessão com facilidade, execute o seguinte código em seu notebook:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "false") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'false') 

Para habilitar, execute:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "true") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'true') 

Quando usar e não usar o Cache inteligente?

Esse recurso será vantajoso quando:

  • Sua carga de trabalho requer a leitura do mesmo arquivo várias vezes, e o tamanho do arquivo pode caber no cache.

  • Sua carga de trabalho usa tabelas Delta, formatos de arquivo Parquet e arquivos CSV.

  • Você está usando o Apache Spark 3 ou superior no Azure Synapse.

Esse recurso não será vantajoso quando:

  • Você está lendo um arquivo que excede o tamanho do cache porque o início dos arquivos pode ser removido, e consultas subsequentes precisam buscar novamente os dados no armazenamento remoto. Nesse caso, você não perceberá os benefícios do Cache inteligente e talvez queira aumentar o tamanho do cache e/ou do nó.

  • Sua carga de trabalho requer grandes quantidades de embaralhamentos, e desabilitar o Cache inteligente libera espaço para evitar que seu trabalho falhe devido ao espaço de armazenamento insuficiente.

  • Você está usando um pool do Spark 3.1 e precisará atualizar seu pool para a versão mais recente do Spark.

Saiba mais

Para saber mais sobre o Apache Spark, confira os seguintes artigos:

Para saber mais sobre como definir as configurações de sessão do Spark

Próximas etapas

Um pool do Apache Spark fornece recursos de computação de Big Data de software livre em que os dados podem ser carregados, modelados, processados e distribuídos para uma análise mais rápida. Para saber mais sobre como criar um para executar suas cargas de trabalho do Spark, acesse os seguintes tutoriais: