Py4JJavaError:调用时发生错误

时间:2019-02-06 04:13:49

标签: python pyspark pyspark-sql py4j

我是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

UPDATE(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实例。该程序运行没有错误。

知道了这一点,还有什么其他的配置选项可以帮助您,所以我不必运行昂贵的实例?

谢谢大家。

2 个答案:

答案 0 :(得分:0)

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

<ul>
  <li *ngFor="let info of infos">{{info}}
    <ol *ngFor="let queue of queues | async">{{queue.SKU}}</ol>
  </li>
</ul>

答案 1 :(得分:0)

您可能没有正确的权限。

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

任何人也可以使用该图片找到here的提示。