当前位置: 首页 > 知识库问答 >
问题:

Py4JJavaError:调用时出错

家西岭
2023-03-14

我是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。驾驶员内存:

 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

更新(2):我通过更改spark默认值尝试了这一点。conf文件。仍在获取错误PySpark:java。lang.OutofMemoryError:Java堆空间

半解决:这似乎是一个一般的内存问题。我用32g内存启动了一个2倍大的实例。程序运行时没有错误。

知道了这一点,是否还有其他东西,一个conf选项可以帮助我不必运行昂贵的实例?

谢谢大家。

共有2个答案

夹谷和裕
2023-03-14

您可能没有正确的权限。

当我使用docker imagejupyter/pyspark-笔记本运行pyspark的示例代码时,我也遇到了同样的问题,它是通过在容器中使用root来解决的。

任何使用该图像的人都可以在这里找到一些提示。

潘衡
2023-03-14

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

    conda install pyspark=2.3.0
 类似资料:
  • 我在运行Python 3.6.5的Jupyter笔记本和运行3.7.2的Python shell中出现了这个错误。我的操作系统是Windows10。我在这两种环境中都安装了pip pyspark。两者都使用Spark Version2.4.0,而我的Java JDK是Oracle JDK Version8,JDK1.8.0_201。这是我在这两种情况下运行的代码: 这里:Spyder中的PySpa

  • 我想按照spark网站上的说明为spark安装graphframes,但命令: <代码>pyspark--打包graphframes:graphframes:0.8.1-spark3.0-s\u 2.12 不适合我。 我尝试了多种安装方法,但决定继续下载graphframes。jar,将其添加到Spark的常规列表中。jar文件并将其手动添加到代码spark中。sparkContext。addPy

  • 我是一个学生,我真的被Py4JJavaError这个问题卡住了两个星期,在互联网上没有太多;我真的需要帮助: 请帮帮我这是下周要做的项目

  • 我试图使用Spark,更具体地说是PySpark和结构化流来消费Kafka。 PY4JJavaError:调用O70时出错。AwaitTermination

  • 我有一个我不能的数据帧。显示()。每次都会出现以下错误?是否可能存在损坏的列? 错误: Py4JJavaError:调用o426.showString时出错。:org.apache.spark.SparkException:作业由于阶段失败而中止:阶段381.0中的任务0失败4次,最近一次失败:阶段381.0中丢失任务0.3(TID 19204,ddlps28.rsc.dwo.com,执行器99)

  • 这是在jupyter笔记本上运行的pyspark代码。 Py4JJavaError:调用None时出错。组织。阿帕奇。火花应用程序编程接口。JAVAJavaSparkContext.:JAVAlang.IllegalAccessError:课堂组织。阿帕奇。火花存储StorageUtils$(在未命名模块@0x30cb5b99中)无法访问sun类。尼奥。DirectBuffer(在模块java.b