我需要关于如何计算需要多少堆空间(内存)来操作xmb(假设x意味着600 mb)在火花独立群集中需要多少信息。Apache Spark 1.2.1独立群集给出java堆空间错误
场景:
我有14GB存储和8个内核独立集群。我想在600 MB的数据上运行(从文件中读取数据并将其写入Cassandra)。
对于这个任务,我有SparkConfig为:
.SET( “spark.cassandra.output.throughput_mb_per_sec”, “800”)
.SET( “spark.storage.memoryFraction”,“0.3 “)
- - 执行程序内存= 5g - 总执行程序核心6 - 提交任务时的驱动程序内存6g。
尽管存在上述配置,但在向Cassandra写入数据时出现java堆空间错误。
下面是Java代码:
public static void main(String[] args) throws Exception {
String fileName = args[0];
Long now = new Date().getTime();
SparkConf conf = new SparkConf(true)
.setAppName("JavaSparkSQL_" +now)
.set("spark.cassandra.connection.host", "192.168.1.65")
.set("spark.cassandra.connection.native.port", "9042")
.set("spark.cassandra.connection.rpc.port", "9160")
.set("spark.cassandra.output.throughput_mb_per_sec","800")
.set("spark.storage.memoryFraction", "0.3");
JavaSparkContext ctx = new JavaSparkContext(conf);
JavaRDD<String> input =ctx.textFile
("hdfs://abc.xyz.net:9000/figmd/resources/" + fileName, 12);
JavaRDD<PlanOfCare> result = input.mapPartitions(new
ParseJson()).filter(new PickInputData());
System.out.print("Count --> "+result.count());
System.out.println(StringUtils.join(result.collect(), ","));
javaFunctions(result).writerBuilder("ks","pt_planofcarelarge",
mapToRow(PlanOfCare.class)).saveToCassandra();
}
什么样的配置,我该做的我错过了什么? 在此先感谢。
和哪里出错? – eliasah
感谢您的回复。将数据写入Cassandra时出现堆空间错误。 –
你需要分享一些代码。也许你正在对你的rdd进行收集,导致堆空间错误,或者你可能会做的其他许多事情之一来炸毁你的堆!你的问题不能像这样解决。 – eliasah