所以我是新手。我的版本是: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,但这没有帮助。我不知道哪里可能出问题了。
答案 0 :(得分:0)
转到设置-运行/调试配置->并放置虚拟机选项
-Xms128m -Xms512m -XX:MaxPermSize = 300m -ea
答案 1 :(得分:0)
如果您在IntelliJ中,则可能会遇到很多困难,我所做的并且起作用的是,我已经通过执行此操作在SparkSession之前初始化了SparkContext
val conf:SparkConf = new SparkConf().setAppName("name").setMaster("local")
.set("spark.testing.memory", "2147480000")
val sc:SparkContext = new SparkContext(conf)
也许有更好的解决方案,因为在这里我实际上不需要初始化SparkContext,因为它是通过初始化SparkSession隐式完成的。