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.
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.
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.
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:
- O que é o Apache Spark
- Conceitos principais do Apache Spark
- Runtime do Azure Synapse para Apache Spark 3.2
- Tamanhos e configurações do pool do Apache Spark
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: