Spark本地测试Hive数据时,报错:
java.lang.outofmemoryerror: java heap space
因为是本地测试,内存足够,所以IDEA中增大内存。Run/Bebug Configurations 中 VM options 设置 -Xmx2048m,问题同样。
基本排除了是内存不足的问题,可能存在问题的地方。
1. AppName
检查 Spark 配置,因为偷懒配置是直接拷贝其他类的,发现 appName 设置错误,改成当前类。
读简单的表没有问题了,但是读复杂的表问题同样。
SparkSession.builder().appName(s"${this.getClass.getSimpleName}")
2. Master
继续检查。因为本地测试,master 为 local 模式,直接调用了常量类设置的好的 Constants.SPARK_LOCAL_MODE。
查看设置成了 local[4],删除,使用全部核心进程处理。再运行,问题解决。
val SPARK_LOCAL_MODE = "local"
可以看出,有时候报内存堆栈问题并非都是内存不足。
object SdkUserBehaviorDaily {
private val warehouseLocation: String = new File("spark-warehouse").getAbsolutePath