2016-12-16 105 views
1

時的記憶,我想星火數據幀轉換爲H2O數據幀蘇打水:出火花數據幀轉換爲H2O數據幀

火花設置,我使用

.setMaster("local[1]") 
.set("spark.driver.memory", "4g") 
.set("spark.executor.memory", "4g") 

,我試圖H2O 2.0。 2和H2O 1.6.4。

val trainsetH2O: H2OFrame = trainsetH 
val testsetH2O: H2OFrame = testsetH 

的錯誤信息是:

ERROR Executor: Exception in task 49.0 in stage 3.0 (TID 62) 
java.lang.OutOfMemoryError: PermGen space 
    at sun.misc.Unsafe.defineClass(Native Method) 
    at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:63) 
    at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:399) 
    at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:396) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:395) 
    at sun.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:113) 
    at sun.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:331) 
    at java.io.ObjectStreamClass.getSerializableConstructor(ObjectStreamClass.java:1376) 
    at java.io.ObjectStreamClass.access$1500(ObjectStreamClass.java:72) 
    at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:493) 
    at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:468) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:468) 
    at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:365) 
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:602) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 

哪裏錯了,我在得到兩個同樣的錯誤? trainset和testset中的數據小於10K,所以它實際上很小。

回答

3

的問題是,你用完了PermGem內存這是不相同的內存空間,你通常配置使用

.set("spark.driver.memory", "4g") .set("spark.executor.memory", "4g")

這是JVM的內存的一部分,其中包含加載的類驅動程序和執行者。爲了提高火花驅動器和執行器的性能,請使用以下參數調用​​或spark-shell命令。

--conf spark.driver.extraJavaOptions="-XX:MaxPermSize=384m" --conf spark.executor.extraJavaOptions="-XX:MaxPermSize=384m"