2
respostas

[Bug] AJUDA URGENTE **Error code is: -9** - elt tabela 2.9 milhões de linhas

Aqui na empresa criei uma pipeline pra ler os dados de uma base SQL Server para o bucket s3. A tabela tem 2.907.375 linhas. Aparentemente é criado o dataframe pyspark, mas ao salvar em CSV no bucket s3 ocorre o erro Error code is: -9.

Estou utilizando o método

df.write.csv(
     path = path_raw_tier,
     mode = "overwrite",
     sep=';',
)

que fica em um script .py e é chamado pelo operador SparkSubmitOperator

O log do Airflow não deixa claro que erro ocorreu para eu tratar.

Qualquer ajuda é bem vinda.

[2023-11-09, 00:47:58 UTC] {spark_submit.py:495} INFO - Read **2907375** rows in DBA table lancamento.
[2023-11-09, 00:47:58 UTC] {spark_submit.py:495} INFO - **Writing csv file into s3a://analytics-production-data-lake-tier-1/airflow/raw_data**
[2023-11-09, 00:57:32 UTC] {taskinstance.py:1935} ERROR - Task failed with exception
Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.9/site-packages/airflow/providers/apache/spark/operators/spark_submit.py", line 157, in execute
    self._hook.submit(self._application)
  File "/home/airflow/.local/lib/python3.9/site-packages/airflow/providers/apache/spark/hooks/spark_submit.py", line 426, in submit
    raise AirflowException(
airflow.exceptions.AirflowException: Cannot execute: spark-submit --master local[1] --jars /usr/local/airflow/jars/aws-java-sdk-dynamodb-1.11.534.jar,/usr/local/airflow/jars/aws-java-sdk-core-1.11.534.jar,/usr/local/airflow/jars/aws-java-sdk-s3-1.11.534.jar,/usr/local/airflow/jars/hadoop-aws-3.2.2.jar,/usr/local/airflow/jars/mssql-jdbc-12.4.0.jre8.jar --name arrow-spark /usr/local/airflow/dags/spark_scripts/spark_load_table_igc_ativy_db03.py lancamento ano_dt_lancamento mes_dt_lancamento. **Error code is: -9**.
[2023-11-09, 00:57:32 UTC] {taskinstance.py:1398} INFO - Marking task as FAILED. dag_id=igc_ativy_lancamento_elt, task_id=spark_load_lancamento_db03, execution_date=20231108T063546, start_date=20231109T004309, end_date=20231109T005732
2 respostas

Ola!

Parece que o erro ocorre durante a execução do seu job Spark no Airflow. O código de erro -9 geralmente está relacionado a problemas de memória. Aqui estão algumas sugestões para resolver ou investigar o problema:

  1. Aumentar a Memória:

    • Verifique se a configuração do executor Spark no Airflow está usando recursos adequados. Talvez seja necessário aumentar a quantidade de memória alocada para o executor Spark.
  2. Configuração do Spark:

    • Certifique-se de que as configurações do Spark no seu script (como spark.executor.memory e spark.driver.memory) são suficientes para lidar com o volume de dados.
  3. Logs do Spark:

    • Dê uma olhada nos logs do Spark, que podem fornecer informações mais detalhadas sobre o erro. Você pode configurar o seu script Spark para registrar mais informações ou verificar logs diretamente no ambiente de execução.
  4. Particionamento:

    • Se possível, considere particionar o seu DataFrame antes de gravar no CSV. O particionamento pode ajudar a otimizar a execução, especialmente para grandes conjuntos de dados.
  5. Tentativa Local:

    • Execute o job Spark localmente com um conjunto de dados menor para verificar se o problema persiste. Isso pode ajudar a isolar se o problema é específico da execução no Airflow.
  6. Atualizações:

    • Verifique se todas as bibliotecas, incluindo o conector JDBC do SQL Server e as bibliotecas Spark, estão atualizadas. Às vezes, problemas são corrigidos em versões mais recentes.
  7. Recursos do Ambiente:

    • Verifique se o ambiente onde o Spark está sendo executado tem recursos suficientes para lidar com a carga de trabalho. Isso inclui CPU, memória e espaço em disco.

Tente implementar essas sugestões e veja se alguma delas resolve o problema ou fornece mais informações sobre a causa do erro. Se necessário, você pode compartilhar mais trechos de código ou logs para uma análise mais aprofundada.

Boa tarde! Estou rodando o Airflow dentro de um container (ECS) na AWS. A Melhorei a máquina e acompanhando a métricas de uso de cpu e memória, não bate nem 50%, estão baixissimas. Como faço pra ver estas configurações, uma vez que está rodando dentro de um container?

Aumentar a Memória:

Verifique se a configuração do executor Spark no Airflow está usando recursos adequados. Talvez seja necessário aumentar a quantidade de memória alocada para o executor Spark. Configuração do Spark:

Certifique-se de que as configurações do Spark no seu script (como spark.executor.memory e spark.driver.memory) são suficientes para lidar com o volume de dados.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software