我正在尝试为本地运行的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。
我该怎么办?
答案 0 :(得分:2)
当在本地运行时,spark将不会使用更多内存,然后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'。