Compartilhar 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 conforme ele lê do armazenamento do OneLake ou do ADLS (Azure Data Lake Storage) Gen2 por meio de atalhos. Ele também detecta automaticamente as 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 a fim de abrir espaço para dados mais recentes. Esse recurso reduz o custo total de propriedade porque melhora em até 60% o desempenho das leituras subsequentes dos arquivos que são armazenados no cache disponível.

Quando o mecanismo do Apache Spark no Microsoft Fabric consulta um arquivo ou tabela do Lakehouse, ele faz uma chamada ao armazenamento remoto para ler os arquivos subjacentes. Com cada solicitação de consulta para ler os mesmos dados, o mecanismo do Spark deve fazer uma chamada ao armazenamento remoto toda vez. Esse processo redundante adiciona latência ao 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 esse processo armazenando em cache automaticamente cada leitura dentro do espaço de armazenamento em cache alocado em cada nó do Spark, onde os arquivos de dados são armazenados em cache no SSD. Cada solicitação de arquivo verifica se o arquivo existe no cache do nó local 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 lerá o arquivo e o armazenará no cache. Quando o cache fica cheio, o arquivo com o último tempo de acesso mais antigo é 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 compartilharão o mesmo cache. Além disso, esse cache no nível do arquivo de dados possibilita que várias consultas usem o mesmo cache se estiverem acessando os mesmos dados ou arquivos de dados.

Como ele 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 workspaces com tamanho de cache com 50%. 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.

Quando usar o cache inteligente

Esse recurso beneficiará você se:

  • Sua carga de trabalho requerer 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ê estiver lendo um arquivo que excede o tamanho do cache. Nesse caso, o início dos arquivos poderá ser removido e as consultas subsequentes precisarão buscar novamente os dados do 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 ordem aleatória. Desabilitar o cache inteligente libera espaço disponível para evitar que seu trabalho falhe devido a espaço de armazenamento insuficiente.

Habilitar e desabilitar o cache inteligente

Você pode desabilitar ou habilitar o cache inteligente em uma sessão executando o código a seguir no notebook ou definindo essa configuração no nível do item do ambiente ou workspace.

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