1

当我hiveContext使用IDEA创建一个in spark本地模型时,spark版本为1.6.0,程序抛出异常。异常如下:

 Caused by: java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

我注意到了java oom permGen space,所以我认为它可能是 permGen 空间太小了。

所以我在谷歌和堆栈溢出中搜索问题,它建议我增加permgen空间,然后我尝试增加空间如下

val conf = new SparkConf().setMaster("local[4]").setAppName("TF")
conf.set("spark.driver.memory","4g")
conf.set("spark.executor.memory","4g")
conf.set("spark.executor.extraJavaOptions","-XX:MaxPermSize=2048m -XX:PermSize=512m")
conf.set("spark.driver.extraJavaOptions","-XX:PermSize=512m -XX:+PrintGCDetails")
val sc = new SparkContext(conf)
val hc = new HiveContext(sc)

好像不行,而且参数没有生效,错误依旧存在。正如spark官方所说,我们可以通过SparkConf设置spark java属性,所以我使用sparkConf来增加permgen空间,但它不起作用。

如何增加spark中的permgen空间并使其生效。还有其他人遇到类似的问题,以及如何解决它!

4

0 回答 0