相关疑难解决方法(0)

Spark java.lang.OutOfMemoryError:Java堆空间

我的集群:1个主服务器,11个从服务器,每个节点有6 GB内存.

我的设置:

spark.executor.memory=4g, Dspark.akka.frameSize=512
Run Code Online (Sandbox Code Playgroud)

这是问题所在:

首先,我从HDFS到RDD读取了一些数据(2.19 GB):

val imageBundleRDD = sc.newAPIHadoopFile(...)
Run Code Online (Sandbox Code Playgroud)

其次,在这个RDD上做点什么:

val res = imageBundleRDD.map(data => {
                               val desPoints = threeDReconstruction(data._2, bg)
                                 (data._1, desPoints)
                             })
Run Code Online (Sandbox Code Playgroud)

最后,输出到HDFS:

res.saveAsNewAPIHadoopFile(...)
Run Code Online (Sandbox Code Playgroud)

当我运行我的程序时,它显示:

.....
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Starting task 1.0:24 as TID 33 on executor 9: Salve7.Hadoop (NODE_LOCAL)
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Serialized task 1.0:24 as 30618515 bytes in 210 ms
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Starting task 1.0:36 as TID 34 on executor 2: Salve11.Hadoop (NODE_LOCAL)
14/01/15 21:42:28 INFO …
Run Code Online (Sandbox Code Playgroud)

out-of-memory apache-spark

208
推荐指数
9
解决办法
21万
查看次数

pyspark spark-submit中的Java堆空间OutOfMemoryError?

我的数据集大小为10GB(例如Test.txt).

我写了我的pyspark脚本,如下所示(Test.py):

from pyspark import SparkConf
from pyspark.sql import SparkSession
from pyspark.sql import SQLContext
spark = SparkSession.builder.appName("FilterProduct").getOrCreate()
sc = spark.sparkContext
sqlContext = SQLContext(sc)
lines = spark.read.text("C:/Users/test/Desktop/Test.txt").rdd
lines.collect()
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令执行上面的脚本:

spark-submit Test.py --executor-memory  12G 
Run Code Online (Sandbox Code Playgroud)

然后我收到如下错误:

17/12/29 13:27:18 INFO FileScanRDD: Reading File path: file:///C:/Users/test/Desktop/Test.txt, range: 402653184-536870912, partition values: [empty row]
17/12/29 13:27:18 INFO CodeGenerator: Code generated in 22.743725 ms
17/12/29 13:27:44 ERROR Executor: Exception in task 1.0 in stage 0.0 (TID 1)
java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:3230)
        at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
        at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
        at …
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

10
推荐指数
1
解决办法
8063
查看次数

使用 pip install pyspark 安装时是否有 spark-defaults.conf

我安装pysparkpip. 我在jupyter笔记本中编码。一切正常,但不是我java在导出大.csv文件时遇到堆空间错误。 这里有人建议编辑spark-defaults.config. 同样在火花文档中,它说

"注意:在客户端模式下,这个配置不能直接在你的应用程序中通过 SparkConf 设置,因为驱动 JVM 已经启动了。相反,请通过 --driver-memory 命令行选项或在你的默认属性文件。”

但恐怕是在安装时没有这样的文件pysparkpip。我说得对吗?我该如何解决这个问题?

谢谢!

config heap-memory pyspark jupyter-notebook

8
推荐指数
2
解决办法
926
查看次数

如何知道PySpark应用程序的部署模式?

我正在尝试修复内存不足的问题,我想知道是否需要spark-defaults.conf在spark home文件夹中的默认配置文件()中更改这些设置.或者,如果我可以在代码中设置它们.

我看到了这个问题PySpark:java.lang.OutofMemoryError:Java堆空间,它说它取决于我是否在client模式下运行.我在集群上运行spark并使用独立监控它.

但是,我怎么弄清楚我是否在client模式下运行spark ?

cluster-computing apache-spark pyspark

7
推荐指数
2
解决办法
7750
查看次数

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()
Run Code Online (Sandbox Code Playgroud)

返回

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: …
Run Code Online (Sandbox Code Playgroud)

python py4j pyspark pyspark-sql

7
推荐指数
1
解决办法
3万
查看次数