Partilhar via


Cache inteligente no Microsoft Fabric

O recurso de cache inteligente funciona perfeitamente nos bastidores e armazena dados em cache para ajudar a acelerar a execução de trabalhos do Apache Spark no Microsoft Fabric à medida que ele lê do seu armazenamento OneLake ou Azure Data Lake Storage (ADLS) Gen2 por meio de atalhos. Ele também deteta automaticamente alterações nos arquivos subjacentes e atualiza automaticamente os arquivos no cache, fornecendo os dados mais recentes. Quando o tamanho do cache atinge seu limite, o cache libera automaticamente os dados menos lidos para abrir espaço para dados mais recentes. Esse recurso reduz o custo total de propriedade, melhorando o desempenho em até 60% em leituras subsequentes dos arquivos armazenados no cache disponível.

Quando o mecanismo Apache Spark no Microsoft Fabric consulta um arquivo ou tabela de sua casa de lago, ele faz uma chamada para o armazenamento remoto para ler os arquivos subjacentes. A cada solicitação de consulta para ler os mesmos dados, o mecanismo Spark deve fazer uma chamada para o armazenamento remoto a cada vez. Este processo redundante adiciona latência ao seu tempo total de processamento. O Spark tem um requisito de cache que você deve definir e liberar manualmente o cache para minimizar a latência e melhorar o desempenho geral. No entanto, esse requisito pode resultar em dados obsoletos se os dados subjacentes forem alterados.

O cache inteligente simplifica o processo armazenando automaticamente em cache cada leitura dentro do espaço de armazenamento de cache alocado em cada nó do Spark onde os arquivos de dados são armazenados em cache no SSD. Cada solicitação de um arquivo verifica se o arquivo existe no cache do nó local e compara a tag do armazenamento remoto para determinar se o arquivo está obsoleto. Se o arquivo não existir ou se estiver obsoleto, o Spark lê o arquivo e o armazena no cache. Quando o cache fica cheio, o arquivo com a última hora de acesso mais antiga é removido do cache para permitir arquivos mais recentes.

O cache inteligente é um único cache por nó. Se você estiver usando um nó de tamanho médio e executar com dois pequenos executores nesse único nó, os dois executores compartilham o mesmo cache. Além disso, esse cache no nível de arquivo de dados possibilita que várias consultas usem o mesmo cache se estiverem acessando os mesmos dados ou arquivos de dados.

Como funciona

No Microsoft Fabric (Runtime 1.1 e 1.2), o cache inteligente é habilitado por padrão para todos os pools do Spark para todos os espaços de trabalho com tamanho de cache de 50%. O tamanho real do armazenamento disponível e o tamanho do cache em cada nó dependem da família de nós e do tamanho do nó.

Quando usar o cache inteligente

Esta funcionalidade beneficia-o se:

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

  • Sua carga de trabalho usa tabelas Delta Lake, Parquet ou formatos de arquivo CSV.

Você não verá o benefício do cache inteligente se:

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

  • Sua carga de trabalho requer grandes quantidades de embaralhamento. A desativação do cache inteligente libera espaço disponível para evitar que seu trabalho falhe devido ao espaço de armazenamento insuficiente.

Ativar e desativar o cache inteligente

Você pode desabilitar ou habilitar o cache inteligente em uma sessão executando o seguinte código em seu bloco de anotações ou definindo essa configuração no nível do espaço de trabalho ou do item Ambiente .

spark.conf.set("spark.synapse.vegas.useCache", "false/true")