我是scala / spark的新手,正在加载大小为2GB的文件(csv),并且在我的虚拟机上(低于HEAP_SIZE)正常工作。
HEAP_SIZE="-Xms8g -Xmx8g"
但是,当运行相同的代码并在IntelliJ上加载相同的文件时,它将引发java.lang.StackOverflowError exception
。
知道我没有在IntelliJ上正确设置内存选项。
有人可以帮我,因为我的Windows机器上有足够的内存(32GB),因此需要在什么地方进行设置?
通过跟踪错误,它完全来自以下代码,并且显然来自collect
。
val lst: Array[String] = expRDD.map((c: tmpClass) => (c.objType, 0))
.reduceByKey((x: Int, y: Int) => 0)
.map({ (t: Tuple2[String, Int]) => t._1 })
.collect
答案 0 :(得分:1)
增加堆栈大小可能会有所帮助。您可以在相应的“运行/调试”配置的 VM选项字段中指定-Xss4m
。这会将堆栈大小设置为4M(默认堆栈大小取决于OS和JVM版本,通常小于1M)。请注意,如果您的问题是由无限递归引起的,那将无济于事。
答案 1 :(得分:0)
如果您正在使用Scala编译服务器,则JVM选项在此处:
构建,执行,部署>编译器> Scala编译器> Scala编译服务器
(您可能必须重新启动IntelliJ才能应用此功能)
信用额转到@CrazyCoder
答案 2 :(得分:0)