Compartilhar via


Lacunas entre os trabalhos do Spark

Portanto, você verá lacunas na linha do tempo de trabalhos, como a seguinte:

Lacunas do Trabalho

Há algumas razões para isso estar acontecendo. Se as lacunas representam uma grande proporção do tempo gasto em sua carga de trabalho, você precisa 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 ser feito
  • O driver está compilando um plano de execução complexo
  • Execução do código não Spark
  • O driver está sobrecarregado.
  • O cluster está com defeito

Sem trabalhos

Em computação para todos os fins, não ter trabalho a ser feito é a explicação mais provável para as lacunas. Como o cluster está sendo executado e os usuários estão enviando consultas, é de se esperar que haja lacunas. Essas lacunas são o tempo entre os envios da consulta.

Plano de execução complexo

Por exemplo, se você usar withColumn() em um loop, ele criará um plano muito caro para ser processado. As lacunas podem ser o tempo que o driver gasta na criação e no processamento do plano. Se for esse o caso, tente simplificar o código. Use selectExpr() para combinar várias chamadas withColumn() em uma expressão ou converter o código em SQL. Você ainda pode inserir o SQL no seu código Python, usando o Python para manipular a consulta com as funções de cadeia de caracteres. Geralmente, isso corrige esse tipo de problema.

Execução do código não Spark

O código do Spark é gravado no SQL ou usando uma API do Spark como PySpark. Qualquer execução de código que não seja o Spark aparecerá na linha do tempo como sendo lacunas. Por exemplo, você pode ter um loop no Python que chama as 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 você não tiver certeza se o código está executando o Spark, tente executá-lo interativamente em um notebook. Se o código estiver usando o Spark, você verá os trabalhos do Spark na célula:

Execução do Spark

Você também pode expandir o menu suspenso Trabalhos do Spark sob a célula para ver se os trabalhos estão sendo executados ativamente (caso o Spark esteja ocioso). Se você não estiver usando o Spark, não verá Trabalhos do Spark sob a célula ou verá que eles não estão ativos. Se você não puder executar o código interativamente, tente fazer logon no seu código e ver se pode corresponder às lacunas com as seções do código por carimbo de data/hora, mas isso pode ser complicado.

Se você vir lacunas em sua linha do tempo causadas pela execução de código não Spark, isso significa que suas funções de trabalho estão todos ociosos e provavelmente desperdiçando dinheiro durante as lacunas. Talvez isso seja intencional e inevitável, mas se você puder escrever esse código para usar o Spark, usará totalmente o cluster. Comece com este tutorial para saber como trabalhar com o Spark.

O driver está sobrecarregado.

Para determinar se o driver está sobrecarregado, você precisa examinar as métricas do cluster.

Se o cluster estiver no DBR 13.0 ou posterior, clique em Métricas conforme realçado nesta captura de tela:

Novas Métricas do Cluster

Observe a Visualização de distribuição de carga do servidor. Você deve procurar para ver se o driver está muito carregado. Essa visualização tem um bloco de cor para cada computador no cluster. Vermelho significa muito carregado, e azul significa nada carregado.

A captura de tela anterior mostra um cluster basicamente ocioso. Se o driver estiver sobrecarregado, ele será semelhante a este:

Novas Métricas, Driver Ocupado

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

Para corrigir um driver sobrecarregado, consulte Driver do Spark sobrecarregado.

O cluster está com defeito

Clusters com defeito são raros, mas se esse for o caso, pode ser difícil determinar o que aconteceu. Talvez você queira reiniciar o cluster para ver se isso resolve o problema. Você também pode examinar os logs para ver se há algo suspeito. A guia Log de eventos e as guias Logs do driver, realçadas na captura de tela abaixo, serão os locais a serem exibidos:

Obter os logs do driver

Talvez você queira habilitar Entrega do log do cluster para acessar os logs das funções de trabalho. Você também pode alterar o nível de log, mas talvez você precise contatar sua equipe de conta do Databricks para obter ajuda.