pyspark получил Py4JNetworkError («Ответ со стороны Java пуст») при выходе из python - PullRequest
0 голосов
/ 23 ноября 2018

Справочная информация:

  • Режим автономного кластера искры на k8s
  • Искра 2.2.1
  • hadoop 2.7.6
  • Выполнить код в Python, не в режиме клиента pyspark
  • , не в режиме кластера

Код pyspark в python, а не в pyspark env.Любой код может работать и отключить его.Но «иногда», когда код завершает работу и завершает работу, приведенная ниже ошибка будет отображаться даже через time.sleep (10) после spark.stop ().


{{py4j.java_gateway:1038}} INFO - Error while receiving.
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/py4j-0.10.4-py2.7.egg/py4j/java_gateway.py", line 1035, in send_command
    raise Py4JNetworkError("Answer from Java side is empty")
Py4JNetworkError: Answer from Java side is empty
[2018-11-22 09:06:40,293] {{root:899}} ERROR - Exception while sending command.
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/py4j-0.10.4-py2.7.egg/py4j/java_gateway.py", line 883, in send_command
    response = connection.send_command(command)
  File "/usr/lib/python2.7/site-packages/py4j-0.10.4-py2.7.egg/py4j/java_gateway.py", line 1040, in send_command
    "Error while receiving", e, proto.ERROR_ON_RECEIVE)
Py4JNetworkError: Error while receiving
[2018-11-22 09:06:40,293] {{py4j.java_gateway:443}} DEBUG - Exception while shutting down a socket
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/py4j-0.10.4-py2.7.egg/py4j/java_gateway.py", line 441, in quiet_shutdown
    socket_instance.shutdown(socket.SHUT_RDWR)
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
  File "/usr/lib64/python2.7/socket.py", line 170, in _dummy
    raise error(EBADF, 'Bad file descriptor')
error: [Errno 9] Bad file descriptor

Я думаю, причинародительский процесс python пытается получить сообщение журнала от завершенного дочернего процесса 'jvm'.Но зашитая вещь это ошибка не всегда поднимать ...

Есть предложения?

1 Ответ

0 голосов
/ 03 декабря 2018

Эта основная причина - уровень журнала 'py4j'.

Я установил уровень журнала python на DEBUG, это позволило клиенту 'py4j' и 'java' вызвать ошибку соединения при закрытии pyspark.

Таким образом, установка уровня журнала Python на INFO или более высокий уровень решит эту проблему.

ref: Шлюз вызывает исключение при завершении работы

ref: Понижение уровня ведения журнала для сообщений сервера обратного вызова

ref: PySpark Internals

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...