Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spark配置Java堆空间_Java_Scala_Hadoop_Apache Spark - Fatal编程技术网

使用Spark配置Java堆空间

使用Spark配置Java堆空间,java,scala,hadoop,apache-spark,Java,Scala,Hadoop,Apache Spark,我试图通过在spark中对一个小数组进行过采样来创建一个具有数百兆字节的文件,并将其另存为由spark-ec2脚本创建的hdfs系统的对象文件: //Accepted arguments val URI = args(0) val repNum = args(1).toInt //Create a LabeledPoint array of size 2 val labelPts = sc.parallelize(Array(LabeledPoint(1.0, Vectors.dense(1.

我试图通过在spark中对一个小数组进行过采样来创建一个具有数百兆字节的文件,并将其另存为由spark-ec2脚本创建的hdfs系统的对象文件:

//Accepted arguments
val URI = args(0)
val repNum = args(1).toInt

//Create a LabeledPoint array of size 2
val labelPts = sc.parallelize(Array(LabeledPoint(1.0, Vectors.dense(1.0, 0.0, 3.0, 4.0, 5.0, 7.0, 8.0)),
  LabeledPoint(1.0, Vectors.dense(3.0, 1.0, 2.0, 8.0, 6.0, 9.0, 9.0))))

//Oversampling repNum LabeledPoints from the array above
val overSample = labelPts.takeSample(true, repNum, 1)

//output oversampling result as object
sc.parallelize(overSample).saveAsObjectFile(URI)
群集由以下脚本创建:

spark-ec2 -k spark -i ~/.ssh/spark.pem -s 1 launch my-spark-cluster
./spark-submit \
--class SimpleApp \
--master spark://ec2-52-1-94-89.compute-1.amazonaws.com:7077 \
--executor-memory=4g \
--driver-memory=4g \
--conf spark.akka.frameSize=10000 \
--conf spark.core.connection.auth.wait.timeout=1000 \
~/oversample-assembly-1.0.jar \
hdfs://ec2-52-1-94-89.compute-1.amazonaws.com:9000/user/root/oversampleOut \
70000000
我的捆绑spark应用程序通过脚本提交:

spark-ec2 -k spark -i ~/.ssh/spark.pem -s 1 launch my-spark-cluster
./spark-submit \
--class SimpleApp \
--master spark://ec2-52-1-94-89.compute-1.amazonaws.com:7077 \
--executor-memory=4g \
--driver-memory=4g \
--conf spark.akka.frameSize=10000 \
--conf spark.core.connection.auth.wait.timeout=1000 \
~/oversample-assembly-1.0.jar \
hdfs://ec2-52-1-94-89.compute-1.amazonaws.com:9000/user/root/oversampleOut \
70000000

然后它抛出一个
异常:java.lang.OutOfMemoryError:java堆空间
。我不知道它有什么问题,因为如果我的
repNum
设置为6000000,则不会出现错误,输出文件大约为490m,因此我怀疑java堆空间仍然被512m限制,但是我设置了
--executor memory=4g
,并且该集群中的工作节点有7.5GB内存。这里的问题是什么?

您可以使用sparks运行时选项提供额外的java选项
spark.executor.extraJavaOptions
还可以使用
spark.storage.memoryFraction
减少用于缓存的内存。有关更多信息,请遵循以下步骤

它是否作为64位进程运行?@sturcotte06我不知道如何检查它是否运行作为一个64位进程,但它是一个Ubuntu 14.04 64位EC2实例,jvm是OpenJDK 64位服务器,你解决了这个问题吗?我也面临同样的问题。。我的代码在spark shell和相同的数据集上运行良好,但在尝试打包并通过spark submit运行时失败