我需要關於如何計算需要多少堆空間(內存)來操作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