错误SparkContext:初始化SparkContext时出错。 java.lang.IllegalArgumentException:系统内存259522560必须至少为471859200

时间:2018-10-21 17:58:35

标签: java apache-spark intellij-idea

所以我是新手。我的版本是:Spark 2.1.2,Scala版本2.11.8(Java HotSpot™64位服务器VM,Java 1.8.0_131)。我正在Windows 10(x64)上使用IntellijIdea 2018社区。每当我尝试运行一个简单的字数示例时,都会出现以下错误:

  

18/10/22 01:43:14错误SparkContext:初始化SparkContext时出错。   java.lang.IllegalArgumentException:系统内存259522560必须位于   最少471859200。请使用--driver-memory增加堆大小   选项或Spark配置中的spark.driver.memory。在   org.apache.spark.memory.UnifiedMemoryManager $ .getMaxMemory(UnifiedMemoryManager.scala:216)     在   org.apache.spark.memory.UnifiedMemoryManager $ .apply(UnifiedMemoryManager.scala:198)     在org.apache.spark.SparkEnv $ .create(SparkEnv.scala:330)在   org.apache.spark.SparkEnv $ .createDriverEnv(SparkEnv.scala:174)在   org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:257)     在org.apache.spark.SparkContext。(SparkContext.scala:432)在   WordCount.main(WordCount.scala)的WordCount $ .main(WordCount.scala:5)

PS:这是单词计数器的代码,用作示例:

import org.apache.spark.{SparkConf,SparkContext}
object WordCount {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("mySpark").setMaster("local")
val sc = new SparkContext(conf)
val rdd = sc.textFile(args(0))
val wordcount = rdd.flatMap(_.split("\t") ).map((_, 1))
  .reduceByKey(_ + _)
for (arg <- wordcount.collect())
  print(arg + " ")
println()
//    wordcount.saveAsTextFile(args(1))
//    wordcount.saveAsTextFile("myFile")
sc.stop()
}
}

所以我的问题是如何摆脱这个错误。我已经搜索了解决方案,并尝试安装不同版本的Spark,JDK和Hadoop,但这没有帮助。我不知道哪里可能出问题了。

2 个答案:

答案 0 :(得分:0)

转到设置-运行/调试配置->并放置虚拟机选项

-Xms128m -Xms512m -XX:MaxPermSize = 300m -ea

答案 1 :(得分:0)

如果您在IntelliJ中,则可能会遇到很多困难,我所做的并且起作用的是,我已经通过执行此操作在SparkSession之前初始化了SparkContext

  1. val conf:SparkConf = new SparkConf().setAppName("name").setMaster("local") .set("spark.testing.memory", "2147480000")

  2. val sc:SparkContext = new SparkContext(conf)

也许有更好的解决方案,因为在这里我实际上不需要初始化SparkContext,因为它是通过初始化SparkSession隐式完成的。