Py4jjavaerror an error occurred while calling
Я новичок в PySpark. Я писал свой код с помощью тестового образца. Как только я запускаю код для файла большего размера (сжатый на 3 ГБ). Мой код выполняет только некоторую фильтрацию и объединения. Я продолжаю получать ошибки, касающиеся Py4J.
Любая помощь была бы полезна и оценена.
from pyspark.sql import SparkSession
from pyspark.conf import SparkConf
ss = SparkSession \
.builder \
.appName(“Example”) \
.getOrCreate()
ss.conf.set(“spark.sql.execution.arrow.enabled”, ‘true’)
df = ss.read.csv(directory + ‘/’ + filename, header=True, sep=”,”)
# Some filtering and groupbys…
df.show()
Возврат:
Py4JJavaError: An error occurred while calling o88.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in
stage 3.0 failed 1 times, most recent failure: Lost task 0.0 in stage 3.0 (TID
1, localhost, executor driver): java.lang.OutOfMemoryError: Java heap space
…
Caused by: java.lang.OutOfMemoryError: Java heap space
Ответ
Это текущая проблема с pyspark 2.4.0, установленной через conda. Вы захотите перейти на pyspark 2.3.0 с помощью командной строки conda или терминала Linux:
conda install pyspark=2.3.0
Возможно, у вас неправильные разрешения.
У меня такая же проблема, когда я использую образ docker jupyter/pyspark-notebookдля запуска примера кода pyspark, и она была решена с помощью root в контейнере.
Как исправить – “Py4JJavaError: An Error Occurred While Calling oxx.showString” в Spark.
Эта ошибка может возникать в различных форматах, как показано ниже –
Py4JJavaError: An error occurred while calling oxx.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure:
java.lang.OutOfMemoryError: Java heap space
Py4JJavaError: An error occurred while calling oxx.showString.
: java.lang.IllegalArgumentException: java.net.UnknownHostException: xxxxxxxxxx
Py4JJavaError: An error occurred while calling oxxxx.collectToPython.
: org.apache.spark.SparkException
В зависимости от формата, вкуса и типа, основной причины этой ошибки может быть несколько.
Проверьте :
- Прежде всего, желательно быстро просмотреть журналы, если в них есть какие-либо подсказки.
- Также посмотрите журналы исполнителя – из Spark UI -> Неудачные задачи -> Просмотреть подробности
Проверьте :
- В качестве следующей проверки вы можете попробовать увеличить различные настройки и флаги, связанные с выделением памяти, выполнением задач и т.д.
Проверьте :
- Версии различных используемых программ и пакетов, например, Spark, Java, Kafka, Scala и т. Д. Иногда небольшая ошибка несовместимости версий может привести к проблемам или ошибкам, которые чрезвычайно сложно отследить, отладить и исправить.
- Используете ли вы какие-либо операции, такие как count() или show(), для вывода промежуточных или конечных результатов. Такие операции должны быть ограничительными с точки зрения количества отображаемых наборов результатов.
- Убедитесь, что имя хоста, IP-адреса всех узлов, а именно главного узла, рабочих узлов и т.д., правильно определены в файле etc \ hosts и других конфигурационных объектах. Убедитесь, что эти узлы запущены и доступны. Это применимо как для локальных, так и для облачных настроек, таких как AWS, GCP, Azure и т. Д. где определения общедоступных или внешних IP-адресов должны быть соответствующим образом определены и доступны.
Значения Null также являются основным виновником во многих случаях, особенно если вы выполняете операции с данными с использованием spark-sql. Убедитесь, что поля или столбцы данных правильно приписаны свойству null или not-null в зависимости от варианта использования.