我使用已经有一段时间了。因此,我知道我们可以使用--driver-memory和--executor-memory这样的选项启动Shell来更改默认值。
因此,我使用以下命令启动了spark-shell:
$ spark-shell --driver-memory 100M但是,我被以下错误击中了:
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel).
java.lang.OutOfMemoryError: Java heap space
at scala.reflect.internal.Names$class.enterChars(Names.scala:70)
at scala.reflect.internal.Names$class.body$1(Names.scala:116)
at scala.reflect.internal.Names$class.newTermName(Names.scala:127)
at scala.reflect.internal.SymbolTable.newTermName(SymbolTable.scala:16)
at scala.reflect.internal.Names$class.newTermName(Names.scala:135)
at scala.reflect.internal.SymbolTable.newTermName(SymbolTable.scala:16)
at scala.reflect.internal.Names$class.newTypeName(Names.scala:139)
at scala.reflect.internal.SymbolTable.newTypeName(SymbolTable.scala:16)
at scala.tools.nsc.symtab.SymbolLoaders.enterClass(SymbolLoaders.scala:61)
at scala.tools.nsc.symtab.SymbolLoaders.enterClassAndModule(SymbolLoaders.scala:119)
at scala.tools.nsc.symtab.SymbolLoaders.initializeFromClassPath(SymbolLoaders.scala:167)
at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1$$anonfun$apply$mcV$sp$1.apply(SymbolLoaders.scala:265)
at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1$$anonfun$apply$mcV$sp$1.apply(SymbolLoaders.scala:264)
at scala.collection.Iterator$class.foreach(Iterator.scala:893)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1.apply$mcV$sp(SymbolLoaders.scala:264)
at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1.apply(SymbolLoaders.scala:260)
at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1.apply(SymbolLoaders.scala:260)
at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:235)
at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader.doComplete(SymbolLoaders.scala:260)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:211)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.load(SymbolLoaders.scala:227)
at scala.reflect.internal.Symbols$Symbol.typeParams(Symbols.scala:1733)
at scala.reflect.internal.Types$class.isRawIfWithoutArgs(Types.scala:3756)
at scala.reflect.internal.SymbolTable.isRawIfWithoutArgs(SymbolTable.scala:16)
at scala.reflect.internal.tpe.TypeMaps$$anon$1.apply(TypeMaps.scala:328)
at scala.reflect.internal.tpe.TypeMaps$$anon$1.apply(TypeMaps.scala:325)
at scala.reflect.internal.Symbols$Symbol.modifyInfo(Symbols.scala:1542)
at scala.reflect.internal.Symbols$Symbol.cookJavaRawInfo(Symbols.scala:1688)
at scala.tools.nsc.typechecker.Infer$Inferencer.checkAccessible(Infer.scala:270)我被这个错误弄糊涂了。既然,我们可以用任何数量的内存启动spark-shell,那么为什么它会在1亿内存中失败呢?
发布于 2016-12-10 19:31:34
这里没发生什么奇怪的事。火花是一个复杂的引擎,需要大量的记忆。空闲驱动程序进程的内存占用约为250 an,您需要的比稳定工作所需的内存要多得多。
https://stackoverflow.com/questions/41077576
复制相似问题