O ajuste de desempenho do Spark é o processo de ajuste das configurações para registro de memória, núcleos e instâncias usadas pelo sistema. Esse processo oferece excelente desempenho ao Spark e também ajuda a evitar gargalos de recursos. 
Para reduzir o uso de memória, talvez seja necessário armazenar RDDs Spark serializados. A serialização de dados também afeta o desempenho da rede. Aqui estão algumas coisas que você pode fazer para melhorar o desempenho do Spark:
O Spark é compatível com duas bibliotecas de serialização:
Há três aspectos a serem destacados ao ajustar o uso da memória:
Para reduzir o consumo de memória, você tem a opção de evitar funções Java que podem sobrecarregar. Aqui estão algumas maneiras de fazer isso:
Para evitar a grande “rotatividade” relacionada aos RDDs anteriormente armazenados pelo programa, o Java exclui objetos antigos e aloca espaço para novos objetos. Por outro lado, usar uma estrutura de dados com menos objetos reduz muito o custo. Um exemplo seria usar um array de Ints em vez de um LinkedList. Como alternativa, você pode usar objetos serializados para ter apenas um objeto por partição RDD.
O uso eficaz da memória é essencial para um bom desempenho. O Spark usa a memória principalmente para armazenamento e execução. A memória de armazenamento é usada para armazenar dados em cache para reutilização posterior. A memória de execução, por outro lado, é usada para cálculos como shuffle, ordenar, juntar e agregar. Existem três desafios de contenção de memória que o Apache Spark deve resolver:
Em vez de evitar a alocação de memória estática antecipadamente, você pode forçar a liberação dos dados da memória e reagir à contenção de memória à medida que ela surgir.
