pyspark :将StringIndexer参数 "handleInvalid "改为 "skip "后,Java堆空间出现错误。

问题描述 投票:0回答:1

我正在做一个机器学习的应用(使用pycharm),一切工作都很正常。

但当我决定改变'HandlInvalid'参数时,spark会抛出这个java堆错误。

Exception in thread "dispatcher-event-loop-1" java.lang.OutOfMemoryError: Java heap space
.....
.....
ERROR Utils: Uncaught exception in thread driver-heartbeater
java.lang.OutOfMemoryError: Java heap space
.....
.....
py4j.protocol.Py4JJavaError: An error occurred while calling o6473.fit.
: java.lang.OutOfMemoryError: Java heap space

当我尝试改变driver.memory时,我得到这个错误。

Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Invalid maximum heap size: -Xmx5g
The specified size exceeds the maximum representable size.

这是我的spark会话。

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Ope inp').master('local')\
    .config("spark.driver.memory", "5g")\
    .enableHiveSupport().getOrCreate()

引自apache.spark.config。

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

我怎么能设置 驱动程序.memroy执行器.内存 配置在文件属性中,这样我就不用每次调试程序时都要设置它们了。

pyspark heap-memory
1个回答
0
投票

我想明白了。

这个问题的解决要归功于64位的JVM.首先我运行的是32位的JVM,它不允许限制堆大小的特定参数。

要弄清楚你有哪种JVM,请尝试第二个答案[]。https:/stackoverflow.coma20622637096004][1] 。

© www.soinside.com 2019 - 2024. All rights reserved.