Pular para o conteúdo principal

Lacunas entre Spark Trabalho

Então, o senhor vê lacunas em seu cronograma de trabalho, como as seguintes:

Job Lacunas

Existem alguns motivos pelos quais isso pode estar acontecendo. Se as lacunas representarem uma grande proporção do tempo gasto em sua carga de trabalho, você precisará descobrir o que está causando essas lacunas e se isso é esperado ou não. Há algumas coisas que podem estar acontecendo durante as lacunas:

  • Não há trabalho a fazer
  • O driver está compilando um plano de execução complexo
  • Execução de código que não seja Spark
  • O motorista está sobrecarregado
  • o agrupamento não está funcionando corretamente

Sem trabalho​

Em sites de uso geral, como o compute, não ter trabalho a fazer é a explicação mais provável para as lacunas. Como o agrupamento está em execução e os usuários estão enviando consultas, é normal que ocorram lacunas. Essas lacunas são o tempo entre os envios de consultas. Considere utilizar serverless compute em vez disso. Com o serviço de assistência em viagem “ serverless ”, o cliente não pagará pelo tempo de espera, o que pode reduzir significativamente os custos.

Plano de execução complexo​

Por exemplo, se você usar withColumn() em um loop, isso cria um plano muito caro de processar. As lacunas podem ser o tempo que o motorista está gastando simplesmente criando e processando o plano. Se for esse 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 corrige 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:

Execução do Spark

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 você observar lacunas na sua linha do tempo causadas pela execução de código nãoSpark, isso significa que todos os seus trabalhadores estão parados e provavelmente desperdiçando dinheiro durante as lacunas. Talvez isso seja intencional e inevitável, mas se for possível escrever este código para utilizar Spark, será possível aproveitar ao máximo o clustering. Inicie com este tutorial para aprender a trabalhar com Spark ou, se o código nãoSpark for intencional, considere utilizar serverless compute em vez disso. Com o serviço de assistência em viagem “ serverless ”, o senhor não pagará pelo tempo de espera, o que pode reduzir significativamente os custos.

O motorista está sobrecarregado​

Para determinar se o driver está sobrecarregado, o senhor precisa examinar as métricas de agrupamento.

Se o seu cluster estiver no Databricks Runtime 13.0 ou posterior, clique em métricas , conforme destacado nesta captura de tela:

Novas métricas de agrupamento

Observe a visualização da distribuição de carga do servidor . Você deve verificar se o motorista está muito carregado. Essa visualização tem um bloco de cores para cada máquina no clustering. Vermelho significa muito carregado e azul significa que não está carregado.

A captura de tela anterior mostra um clustering basicamente parado. Se o driver estiver sobrecarregado, ficaria mais ou menos assim:

Novas métricas, motorista ocupado

Podemos ver que um quadrado é vermelho, enquanto os outros são azuis. Passe o mouse sobre o quadrado vermelho para garantir que o bloco vermelho represente seu motorista.

Para corrigir um driver sobrecarregado, consulte Spark driver overloaded.

o agrupamento não está funcionando corretamente​

O mau funcionamento do clustering é raro, mas, se esse for o caso, pode ser difícil determinar o que aconteceu. Talvez o senhor queira apenas reiniciar o clustering 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:

Obtenção de registros de driver

O senhor pode querer ativar o clustering log delivery 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.