Py4JJavaError:调用时发生错误

我是 PySpark 的新手。我一直在用测试样本编写我的代码。一旦我在更大的文件(3gb 压缩)上运行代码。我的代码只是做一些过滤和连接。我不断收到有关 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

更新:我使用的是 py4j 10.7,刚刚更新到 10.8

更新(1):添加 spark.driver.memory:

 ss = SparkSession 
  .builder 
  .appName("Example") 
  .config("spark.driver.memory", "16g")
  .getOrCreate()

汇总返回错误:

ERROR:py4j.java_gateway:An error occurred while trying to connect to the Java server (127.0.0.1:38004)

py4j.protocol.Py4JNetworkError: Answer from Java side is empty
"Error while receiving", e, proto.ERROR_ON_RECEIVE)
py4j.protocol.Py4JNetworkError: Error while receiving

Py4JError
Py4JError: An error occurred while calling o94.showString

UPDATE(2) :我通过更改 spark-defaults.conf 文件进行了尝试。仍然出现错误 PySpark: java.lang.OutofMemoryError: Java heap space

半解决:这似乎是一个普遍的内存问题。我启动了一个具有 32g 内存的 2xlarge 实例。该程序运行没有错误。

知道了这一点,还有其他什么可以提供帮助的 conf 选项,这样我就不必运行昂贵的实例了吗?

谢谢大家。

stack overflow Py4JJavaError: An error occurred while calling
原文答案

答案:

作者头像

这是通过 conda 安装的 pyspark 2.4.0 的当前问题。您需要通过 conda 提示符或 Linux 终端降级到 pyspark 2.3.0:

    conda install pyspark=2.3.0
作者头像

您可能没有正确的权限。

当我使用 docker image jupyter/pyspark-notebook 运行 pyspark 的示例代码时,我遇到了同样的问题,并且通过在容器中使用 root 解决了它。

任何人也使用该图像可以找到一些提示 here

相关问题