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

No site compute, não ter trabalho a fazer é a explicação mais provável para as lacunas. Como o clustering está em execução e os usuários estão enviando consultas, as lacunas são esperadas. Essas lacunas são o tempo entre os envios de consultas.

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 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 Spark, utilizará totalmente o clustering. 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 de agrupamento.

Se o clustering estiver no DBR 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.