Django + Celery + PySpark внутри Docker вызывает SystemExit: 1 и исключение NoSuchFileException при создании SparkSession

Я запускаю приложение Django, которое использует задачи Celery и PySpark внутри контейнера Docker. Одна из моих задач Celery вызывает функцию, которая инициализирует SparkSession с помощью getOrCreate(). Однако, когда это происходит, рабочий объект неожиданно завершает работу с SystemExit: 1 и NoSuchFileException.

Вот соответствующая часть трассировки стека:

SystemExit: 1
[INFO] Worker exiting (pid: 66009)
...
WARN NativeCodeLoader: Unable to load native-hadoop library for your platform...
WARN DependencyUtils: Local jar /...antlr4-4.9.3.jar does not exist, skipping.
...
Exception in thread "main" java.nio.file.NoSuchFileException: /tmp/tmpagg4d47k/connection8081375827469483762.info
...
[ERROR] Worker (pid:66009) was sent SIGKILL! Perhaps out of memory?

как я могу решить проблему

На ум приходят две возможные проблемы:

  1. Недостаточно памяти в контейнере Docker — PySpark может занимать слишком много памяти. Если в контейнере заканчивается память, процесс может быть остановлен (как указано в сообщении SIGKILL в ваших журналах).

  2. Неправильно смонтированный /tmp том — PySpark создает временные файлы во время выполнения. Если /tmp неправильно смонтирован или недоступен для записи, вы получите NoSuchFileException.

Чтобы решить обе проблемы, вы можете настроить свой docker-compose.yml следующим образом:

services:
  celery:
    mem_limit: 2g
    volumes:
      - /tmp:/tmp 

Дайте мне знать, если вы уже проверили это!

Вернуться на верх