scala - IntelliJ 上的 java.lang.StackOverflowError
问题描述
我是 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
解决方案
增加堆栈大小可能会有所帮助。您可以在相应的运行/调试配置-Xss4m
的VM 选项字段中指定。这会将堆栈大小设置为 4M(默认堆栈大小取决于 OS 和 JVM 版本,通常低于 1M)。请注意,如果您的问题是由无限递归引起的,这将无济于事。
推荐阅读
- python - python和c++对象的内存地址不相同
- javafx - 如何在单个 javafx 模板中的不同坐标处绘制 100 个二维形状(如圆形)?
- c# - 算子的预增量
- python - 如何修改满足条件的值下一行的值?
- python-3.x - 无法将时间序列图更改为每小时间隔
- jms - JCA JMS 和普通 JMS 有什么区别
- assembly - 为什么堆栈上参数的顺序是这样的顺序,即第一个参数位于最低地址,第二个位于第二低地址,依此类推
- javascript - 复选框选中或取消选中值 null
- python - 为什么 keras model.predict 只返回一个概率?如何输出所有类的所有概率?
- php - 这个电子邮件功能有问题吗?