Lacunas entre Spark Trabalho
Então, o senhor vê lacunas em seu cronograma de trabalho, como as seguintes:
Há alguns motivos pelos quais isso pode estar acontecendo. Se as lacunas representarem uma grande proporção do tempo gasto com sua carga de trabalho, o senhor precisa descobrir o que está causando essas lacunas e se isso é esperado ou não. Há algumas coisas que podem estar acontecendo durante os intervalos:
Não há trabalho a fazer
O driver está compilando um plano de execução complexo
Execução de código sem faísca
O motorista está sobrecarregado
O cluster está com defeito
Nenhum trabalho
Na computação para todos os fins, não ter trabalho a fazer é a explicação mais provável para as lacunas. Como o cluster está em execução e os usuários estão enviando consultas, são esperadas lacunas. Essas lacunas são o tempo entre os envios de consultas.
Plano de execução complexo
Por exemplo, se o senhor usar withColumn()
em um loop, isso criará um plano muito caro para processar. As lacunas podem ser o tempo que o motorista está gastando simplesmente construindo e processando o plano. Se esse for o caso, tente simplificar o código. Use selectExpr()
para combinar várias chamadas withColumn()
em uma única expressão ou converta o código em SQL. O senhor ainda pode incorporar o SQL em seu código Python, usando o Python para manipular a consulta com funções de cadeias de caracteres. Isso geralmente resolve esse tipo de problema.
Execução de código não Spark
Spark O código é escrito em SQL ou usando um Spark API como PySpark. Qualquer execução de código que não seja do Spark aparecerá na linha do tempo como lacunas. Por exemplo, o senhor pode ter um loop no Python que chama funções nativas do Python. Esse código não está sendo executado no Spark e pode aparecer como uma lacuna na linha do tempo. Se não tiver certeza de que seu código está sendo executado Spark, tente executá-lo interativamente em um Notebook. Se o código estiver usando Spark, o senhor verá Spark Job abaixo da célula:
O senhor também pode expandir o menu suspenso Spark Jobs sob a célula para ver se o trabalho está sendo executado ativamente (no caso de Spark estar parado). Se o senhor não estiver usando o Spark, não verá os Spark Jobs sob a célula ou verá que nenhum está ativo. Se não for possível executar o código de forma interativa, o senhor pode tentar registrar o código e ver se consegue fazer a correspondência entre as lacunas e as seções do código por registro de data e hora, mas isso pode ser complicado.
Se o senhor observar lacunas em sua linha do tempo causadas pela execução de código nãoSpark, isso significa que seu funcionário está parado e provavelmente desperdiçando dinheiro durante as lacunas. Talvez isso seja intencional e inevitável, mas se o senhor puder escrever esse código para usar o Spark, utilizará totalmente o cluster. Comece com este tutorial para aprender a trabalhar com Spark.
O motorista está sobrecarregado
Para determinar se o driver está sobrecarregado, o senhor precisa examinar as métricas do cluster.
Se o seu cluster estiver no DBR 13.0 ou posterior, clique em métricas, conforme destacado nesta captura de tela:
Observe a visualização da distribuição da carga do servidor. O senhor deve verificar se o driver está muito carregado. Essa visualização tem um bloco de cores para cada máquina no cluster. Vermelho significa muito carregado e azul significa nada carregado.
A captura de tela anterior mostra basicamente um parado cluster. Se o driver estiver sobrecarregado, ele terá a seguinte aparência:
Podemos ver que um quadrado é vermelho, enquanto os outros são azuis. Passe o mouse sobre o quadrado vermelho para ter certeza de que o bloco vermelho representa o seu motorista.
Para corrigir um driver sobrecarregado, consulte Spark driver overloaded.
O cluster está com defeito
O mau funcionamento do site clusters é raro, mas, se esse for o caso, pode ser difícil determinar o que aconteceu. Talvez o senhor queira apenas reiniciar o cluster para ver se isso resolve o problema. O senhor também pode consultar o site logs para verificar se há algo suspeito. As guias Event log tab e Driver logs, destacadas na captura de tela abaixo, são os locais onde o senhor deve procurar:
Talvez o senhor queira ativar a entregacluster log para acessar o logs do trabalhador. O senhor também pode alterar o nível log, mas talvez seja necessário entrar em contato com a equipe Databricks account para obter ajuda.