Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em seguida, examine as estatísticas de E/S do estágio mais longo novamente:
O que é E/S alto?
Quantos dados precisam estar em uma coluna de E/S para serem considerados altos? 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 estará associado a E/S. Isso seria E/S alta.
Entrada alta
Se houver muitas entradas em seu estágio, isso significa que você está gastando muito tempo lendo dados. Primeiro, identifique quais dados esse estágio está lendo. Consulte Identificar uma leitura de alto custo no DAG do Spark.
Depois de identificar os dados específicos, aqui estão algumas abordagens para acelerar suas leituras:
- Use Delta.
- Use o agrupamento do Liquid para melhor omissão de dados. Consulte Usar clustering líquido para tabelas.
- 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 a omissão de 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, tente fazer o DFP funcionar.
- Aumente o tamanho do cluster ou use a computação sem servidor.
Saída alta
Se você observar muitas saídas do seu estágio, isso significa que você está gastando muito tempo gravando dados. Aqui estão algumas abordagens para resolver isso:
- Você está reescrevendo muitos dados? Consulte Como determinar se o Spark está reescrevendo dados para verificar. Se você estiver reescrevendo muitos dados:
- Veja se você tem uma mesclagem que precisa ser otimizada.
- Use os vetores de exclusão para marcar as linhas existentes como removidas ou alteradas sem reescrever o arquivo Parquet.
- Habilite Photon se ainda não estiver. O Photon pode ajudar muito com a velocidade de gravação.
- Aumente o tamanho do cluster ou use a computação sem servidor.
Embaralhamento alto
O Databricks recomenda que você defina spark.sql.shuffle.partitions=auto para deixar o Spark escolher automaticamente o número de partições de shuffle ideais. Se você não estiver familiarizado com a ordem aleatória, este é o momento de aprender.
Sem E/S alta
Se você não observar a E/S alta em nenhuma das colunas, será necessário investigar mais. Consulte Estágio do Spark lento com pouco E/S.