Compartilhar via


Fase de E/S alta do Spark

Em seguida, examine as estatísticas de E/S do estágio mais longo novamente:

Fase de E/S longa

O que é E/S alto?

Quantos dados precisam estar em uma coluna de E/S para ela ser considerada alta? Para descobrir isso, comece com o número mais alto em qualquer uma das colunas fornecidas. Em seguida, considere o número total de núcleos de CPU que temos em todos os nossos trabalhadores. Geralmente, cada núcleo pode ler e gravar cerca de 3 MBs por segundo.

Divida sua maior coluna de E/S pelo número de núcleos de trabalho do cluster e divida-a por segundos de duração. Se o resultado for em torno de 3 MB, você provavelmente está limitado por E/S. Isso seria E/S alta.

Entrada alta

Se houver muitas entradas na sua fase, isso significa que você está gastando muito tempo lendo dados. Primeiro, identifique quais dados esse estágio está lendo. Consulte Identificar uma leitura cara no DAG do Spark.

Depois de identificar os dados específicos, aqui estão algumas abordagens para acelerar suas leituras:

  • Use Delta.
  • Experimente Photon. Ele pode ajudar muito com a velocidade de leitura, especialmente para tabelas amplas.
  • Torne sua consulta mais seletiva para que ela não precise ler tantos dados.
  • Reconsidere seu layout de dados para que ignorar dados seja mais eficaz.
  • Se você estiver lendo os mesmos dados várias vezes, use o cache delta .
  • Se você estiver fazendo uma junção, considere a possibilidade de tentar fazer o DFP funcionar.

Saída alta

Se você vir muitas saídas da sua fase, isso significa que você está gastando muito tempo gravando dados. Aqui estão algumas abordagens para resolver isso:

Embaralhamento alto

Se você não estiver familiarizado com o shuffle, este é o momento de aprender.

Sem E/S alta

Se você não vir a E/S alta em nenhuma das colunas, precisará se aprofundar. Consulte Estágio do Spark lento com pouco E/S.