无法设置Spark内存

时间:2016-09-12 20:14:22

标签: java memory apache-spark rdd

我正在尝试为本地运行的Spark应用程序设置最大内存。 我尝试了很多不同的方法。

在程序中

SparkConf conf = new SparkConf();
conf.setMaster("local[2]");
conf.setAppName("app");     
conf.set("spark.executor.memory", "4G");
conf.set("spark.driver.memory", "4G");
sc = new JavaSparkContext(conf);

执行时

./bin/spark-submit.cmd ./local/app.jar --master local[2] --driver-memory 4G

但我总是得到以下

INFO [MemoryStore] MemoryStore started with capacity 366.3 MB

并且Spark将RDD溢出到磁盘。 Spark版本是2.0。

我该怎么办?

3 个答案:

答案 0 :(得分:2)

当在本地运行时,sp​​ark将不会使用更多内存,然后java进程可用。 您应该尝试使用额外的内存vm params运行您的应用程序:-Xms2048m -Xmx4096m

答案 1 :(得分:2)

在本地模式下,执行程序是您的驱动程序,因此它只是您的一小部分。 在执行spark-submit时,JVM已经启动,因此您需要传入--driver-memory arg。例如:

spark-submit --driver-memory 4g --class MyClass spark-app-1.0.jar

将使用4G启动JVM。

订单似乎也很重要,--driver-memory

之前需要--class

答案 2 :(得分:0)

spark.driver.memory适用于Spark 2中的本地运行实例。

Spark禁止'-Xms'并将spark.driver.memory转换为'-Xmx'。