如何在 Eclipse 环境中设置 spark 中的堆大小?
How to set heap size in spark within the Eclipse environment?
我正在尝试 运行 在 Eclipse 中使用 spark 的简单代码:
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object jsonreader {
def main(args: Array[String]): Unit = {
println("Hello, world!")
val conf = new SparkConf()
.setAppName("TestJsonReader")
.setMaster("local")
.set("spark.driver.memory", "3g")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val df = sqlContext.read.format("json").load("text.json")
df.printSchema()
df.show
}
}
但是,我收到以下错误:
16/08/18 18:05:28 ERROR SparkContext: Error initializing SparkContext.
java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration.
我遵循了不同的教程,例如:How to set Apache Spark Executor memory。大多数时候我要么使用 --driver-memory
选项(Eclipse 不可能),要么通过修改 spark 配置但没有相应的文件。
有没有人知道如何在 Eclipse 环境中解决这个问题?
在 Eclipse 中转到 运行 > 运行 配置... > 参数 > VM 参数 和将最大堆大小设置为 -Xmx512m
.
您可以通过编辑“${SPARK_HOME}/conf/”中的"spark-defaults.conf"文件来设置"spark.driver.memory"选项,默认情况下,没有名为[=17=的文件]在“${SPARK_HOME}/conf/”目录下,但是有一个文件"spark-defaults.conf.template",可以使用下面的命令创建"spark-defaults.conf"文件:
cp spark-defaults.conf.template spark-defaults.conf
然后,编辑它:
# Example:
# spark.master spark://master:7077
# spark.eventLog.enabled true
# spark.eventLog.dir hdfs://namenode:8021/directory
# spark.serializer org.apache.spark.serializer.KryoSerializer
# spark.driver.memory 5g
# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
spark.driver.memory 3g
在我的例子中 mvn
停止打包项目,但有同样的例外 (java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200.
)。
我通过 changing the settings for the VM heap size 开始调试这个问题:export MAVEN_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=1024m"
。没用..
然后我尝试向 spark config
添加等于 1g
[SparkConfig.set("spark.driver.memory","1g")
] 的 spark.driver.memory
选项。
最后发现我的 java 安装不知何故搞砸了。我 重新安装了 JDK
(更新版本)并且不得不重新设置 JAVA_HOME
路径,然后一切都在终端上运行。
如果升级,要使用 Netbeans
/Intellij
/Eclipse
,需要在其中每个中配置 JDK
设置以指向新安装Java 开发工具包。
我也遇到了这个问题,我就是这样解决的。认为它可能有帮助。
val conf: SparkConf = new SparkConf().setMaster("local[4]").setAppName("TestJsonReader").set("spark.driver.host", "localhost")
conf.set("spark.testing.memory", "2147480000")
将脚本修改为 conf.set("spark.testing.memory", "2147480000")
后对我来说工作正常
完整代码如下:
import scala.math.random
import org.apache.spark._
object SparkPi {
def main(args: Array[String]) {
val conf: SparkConf = new SparkConf().setMaster("local").setAppName("Spark Pi").set("spark.driver.host", "localhost")
conf.set("spark.testing.memory", "2147480000") // if you face any memory issues
val spark = new SparkContext(conf)
val slices = if (args.length > 0) args(0).toInt else 2
val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
val count = spark.parallelize(1 until n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x * x + y * y < 1) 1 else 0
}.reduce(_ + _)
println("Pi is roughly " + 4.0 * count / n)
spark.stop()
}
}
第 2 步
Run it as “Scala Application”
第三步
创建 JAR 文件并执行:
bin/spark-submit --class SparkPi --master local SparkPi.jar
如果你在本地运行,你还需要增加spark.testing.memory
spark.driver.memory, 571859200
spark.testing.memory, 2147480000
我添加了 .set("spark.testing.memory", "2147480000");这让我可以 运行 代码。
SparkConf conf = new SparkConf().setAppName("Text").setMaster("local").set("spark.testing.memory", "2147480000");
JavaSparkContext sparkContxt = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sparkContxt);
我正在尝试 运行 在 Eclipse 中使用 spark 的简单代码:
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object jsonreader {
def main(args: Array[String]): Unit = {
println("Hello, world!")
val conf = new SparkConf()
.setAppName("TestJsonReader")
.setMaster("local")
.set("spark.driver.memory", "3g")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val df = sqlContext.read.format("json").load("text.json")
df.printSchema()
df.show
}
}
但是,我收到以下错误:
16/08/18 18:05:28 ERROR SparkContext: Error initializing SparkContext.
java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration.
我遵循了不同的教程,例如:How to set Apache Spark Executor memory。大多数时候我要么使用 --driver-memory
选项(Eclipse 不可能),要么通过修改 spark 配置但没有相应的文件。
有没有人知道如何在 Eclipse 环境中解决这个问题?
在 Eclipse 中转到 运行 > 运行 配置... > 参数 > VM 参数 和将最大堆大小设置为 -Xmx512m
.
您可以通过编辑“${SPARK_HOME}/conf/”中的"spark-defaults.conf"文件来设置"spark.driver.memory"选项,默认情况下,没有名为[=17=的文件]在“${SPARK_HOME}/conf/”目录下,但是有一个文件"spark-defaults.conf.template",可以使用下面的命令创建"spark-defaults.conf"文件:
cp spark-defaults.conf.template spark-defaults.conf
然后,编辑它:
# Example:
# spark.master spark://master:7077
# spark.eventLog.enabled true
# spark.eventLog.dir hdfs://namenode:8021/directory
# spark.serializer org.apache.spark.serializer.KryoSerializer
# spark.driver.memory 5g
# spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
spark.driver.memory 3g
在我的例子中 mvn
停止打包项目,但有同样的例外 (java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200.
)。
我通过 changing the settings for the VM heap size 开始调试这个问题:export MAVEN_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=1024m"
。没用..
然后我尝试向 spark config
添加等于 1g
[SparkConfig.set("spark.driver.memory","1g")
] 的 spark.driver.memory
选项。
最后发现我的 java 安装不知何故搞砸了。我 重新安装了 JDK
(更新版本)并且不得不重新设置 JAVA_HOME
路径,然后一切都在终端上运行。
如果升级,要使用 Netbeans
/Intellij
/Eclipse
,需要在其中每个中配置 JDK
设置以指向新安装Java 开发工具包。
我也遇到了这个问题,我就是这样解决的。认为它可能有帮助。
val conf: SparkConf = new SparkConf().setMaster("local[4]").setAppName("TestJsonReader").set("spark.driver.host", "localhost")
conf.set("spark.testing.memory", "2147480000")
将脚本修改为 conf.set("spark.testing.memory", "2147480000")
后对我来说工作正常完整代码如下:
import scala.math.random
import org.apache.spark._
object SparkPi {
def main(args: Array[String]) {
val conf: SparkConf = new SparkConf().setMaster("local").setAppName("Spark Pi").set("spark.driver.host", "localhost")
conf.set("spark.testing.memory", "2147480000") // if you face any memory issues
val spark = new SparkContext(conf)
val slices = if (args.length > 0) args(0).toInt else 2
val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
val count = spark.parallelize(1 until n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x * x + y * y < 1) 1 else 0
}.reduce(_ + _)
println("Pi is roughly " + 4.0 * count / n)
spark.stop()
}
}
第 2 步
Run it as “Scala Application”
第三步 创建 JAR 文件并执行:
bin/spark-submit --class SparkPi --master local SparkPi.jar
如果你在本地运行,你还需要增加spark.testing.memory
spark.driver.memory, 571859200 spark.testing.memory, 2147480000
我添加了 .set("spark.testing.memory", "2147480000");这让我可以 运行 代码。
SparkConf conf = new SparkConf().setAppName("Text").setMaster("local").set("spark.testing.memory", "2147480000");
JavaSparkContext sparkContxt = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sparkContxt);