Spark estágio I/O alto

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

E/S de estágio longo

O que é E/S elevada?

Quantos dados precisam estar em uma coluna de E/S para serem considerados altos? Para descobrir isso, primeiro comece com o número mais alto em qualquer uma das colunas dadas. Em seguida, considere o número total de núcleos de CPU que o senhor tem em todos os nossos trabalhadores. Em geral, cada núcleo pode ler e gravar cerca de 3 MBs por segundo.

Divida sua maior coluna de E/S pelo número de cluster worker núcleos e, em seguida, divida esse valor por segundos de duração. Se o resultado for de cerca de 3 MB, provavelmente o senhor está limitado por E/S. Isso seria uma E/S elevada.

Entrada alta

Se houver muitas entradas em seu palco, isso significa que o senhor está gastando muito tempo lendo dados. Primeiro, identifique quais dados esse estágio está lendo. Consulte Identificação de uma leitura cara no DAG do Spark.

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

  • Use Delta.

  • Experimente o Photon. Isso pode ajudar muito na velocidade de leitura, especialmente em tabelas amplas.

  • Torne sua consulta mais seletiva para que ela não precise ler tantos dados.

  • Reconsidere sua disposição de dados para que a omissão de dados seja mais eficaz.

  • Se o senhor estiver lendo os mesmos dados várias vezes, use o cache Delta.

  • Se o senhor estiver fazendo um join, considere a possibilidade de tentar fazer o DFP funcionar.

Alta produção

Se houver muita saída do seu estágio, isso significa que o senhor está gastando muito tempo gravando dados. Aqui estão algumas abordagens para resolver isso:

Alto shuffle

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

Sem E/S alta

Se o senhor não encontrar E/S alta em nenhuma das colunas, precisará ir mais fundo. Veja o estágio Slow Spark com pouca E/S.