PySpark JVM аварийно завершает работу после любой ошибки PythonPython

Программы на Python
Ответить
Anonymous
 PySpark JVM аварийно завершает работу после любой ошибки Python

Сообщение Anonymous »

Я пытаюсь использовать pyspark в блокноте Jupyter в среде разработки pycharm для выполнения задания. он работает нормально, но если в какой-либо ячейке возникает какая-либо ошибка, она перестает работать. в следующий раз, когда я попытаюсь запустить ячейку, я получу эту ошибку.
код для запуска искры.
from pyspark.sql import SparkSession

spark = SparkSession.builder \
.appName("app name") \
.master("local[*]") \
.config("spark.driver.memory", "4g") \
.getOrCreate()

spark_df = spark.read.csv("path", header=True, inferSchema=True)
spark_df.show(5)

это работает нормально, но допустим, следующая ячейка такая
spark_dg.show(5) # the name is incorrect so it will show an error

теперь каждая ячейка, которую я запускаю после получения первой ошибки, выдает мне следующую ошибку, даже если в ячейке нет кода, вызывающего ошибку.
Error = ConnectionRefusedError: [WinError 10061] Соединение не может быть установлено, поскольку целевая машина активно отказывается от него
возможно, внутренняя jvm или что-то происходит сбой каждый раз, когда он получает ошибку, как мне это сделать стоп?
если я перезапущу ядро Jupyter и повторно запущу ячейки, они снова будут работать нормально, но неудобно перезапускать все каждый раз, когда я получаю ошибку.
python version = 3.11
pyspark==3.5.4 (this version is mandatory for the assignment)
java = 11 (eclipse temurin)

полная ошибка
ConnectionRefusedError Traceback (most recent call last)
Cell In[4], line 1
----> 1 spark_dg.show(5)

File F:\MSPython\.venv3\Lib\site-packages\pyspark\sql\dataframe.py:947, in DataFrame.show(self, n, truncate, vertical)
887 def show(self, n: int = 20, truncate: Union[bool, int] = True, vertical: bool = False) -> None:
888 """Prints the first ``n`` rows to the console.
889
890 .. versionadded:: 1.3.0
(...) 945 name | Bob
946 """
--> 947 print(self._show_string(n, truncate, vertical))

File F:\MSPython\.venv3\Lib\site-packages\pyspark\sql\dataframe.py:965, in DataFrame._show_string(self, n, truncate, vertical)
959 raise PySparkTypeError(
960 error_class="NOT_BOOL",
961 message_parameters={"arg_name": "vertical", "arg_type": type(vertical).__name__},
962 )
964 if isinstance(truncate, bool) and truncate:
--> 965 return self._jdf.showString(n, 20, vertical)
966 else:
967 try:

File F:\MSPython\.venv3\Lib\site-packages\py4j\java_gateway.py:1321, in JavaMember.__call__(self, *args)
1314 args_command, temp_args = self._build_args(*args)
1316 command = proto.CALL_COMMAND_NAME +\
1317 self.command_header +\
1318 args_command +\
1319 proto.END_COMMAND_PART
-> 1321 answer = self.gateway_client.send_command(command)
1322 return_value = get_return_value(
1323 answer, self.gateway_client, self.target_id, self.name)
1325 for temp_arg in temp_args:

File F:\MSPython\.venv3\Lib\site-packages\py4j\java_gateway.py:1036, in GatewayClient.send_command(self, command, retry, binary)
1015 def send_command(self, command, retry=True, binary=False):
1016 """Sends a command to the JVM. This method is not intended to be
1017 called directly by Py4J users. It is usually called by
1018 :class:`JavaMember` instances.
(...) 1034 if `binary` is `True`.
1035 """
-> 1036 connection = self._get_connection()
1037 try:
1038 response = connection.send_command(command)

File F:\MSPython\.venv3\Lib\site-packages\py4j\clientserver.py:284, in JavaClient._get_connection(self)
281 pass
283 if connection is None or connection.socket is None:
--> 284 connection = self._create_new_connection()
285 return connection

File F:\MSPython\.venv3\Lib\site-packages\py4j\clientserver.py:291, in JavaClient._create_new_connection(self)
287 def _create_new_connection(self):
288 connection = ClientServerConnection(
289 self.java_parameters, self.python_parameters,
290 self.gateway_property, self)
--> 291 connection.connect_to_java_server()
292 self.set_thread_connection(connection)
293 return connection

File F:\MSPython\.venv3\Lib\site-packages\py4j\clientserver.py:438, in ClientServerConnection.connect_to_java_server(self)
435 if self.ssl_context:
436 self.socket = self.ssl_context.wrap_socket(
437 self.socket, server_hostname=self.java_address)
--> 438 self.socket.connect((self.java_address, self.java_port))
439 self.stream = self.socket.makefile("rb")
440 self.is_connected = True

ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it


Подробнее здесь: https://stackoverflow.com/questions/798 ... thon-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»