FAQ-java.lang.StackOverflowError
更新时间: 2025-05-29 10:56:39
阅读 924
FAQ-java.lang.StackOverflowError
问题描述/异常栈
java.lang.StackOverflowError解决方案
首先确认是driver端还是executor端抛出的错误, driver端需要调整spark.driver.extraJavaOptions参数,在原有参数基础上添加-Xss4m;executor端则需要调整spark.executor.extraJavaOptions参数,在原有参数基础上添加-Xss4m; 此值需要根据实际情况调整问题原因
可通过以上参数可以增加栈空间大小,但只是缓解;原因如下:
Spark 使用 WSCG(Whole Stage Code Gen) 技术执行代码,会根据 SQL 动态生成 Java Code 并调用 Janino 编译后执行;
用户 SQL 查询了大量的字段,并且有大量的复杂表达式,导致到 Janino 生成代码栈溢出;Spark 社区以缓解大部分此类场景,但无法根除,建议用户将 SQL 切分成多个作业,降低单个 SQL 的表达式复杂度。
作者:李云龙
文档反馈
以上内容对您是否有帮助?