集群資訊如下:

處理了3個txt檔案,總大小1.3G左右,想做一個統計關鍵詞出現的次數,在觸發shuffle操作時記憶體溢位
在spark-shell命令下執行,有6個worker每個分配2G記憶體
以下是執行程序,我想問的是這個記憶體溢位正常嗎?難道1.3G的資料都處理不了?順便問一下spark能用多少記憶體處理多大的資料?
scala> val source=sc.textFile("hdfs://node1:9100/user/wzy/sogoudata")
source: org.apache.spark.rdd.RDD[String] = hdfs://node1:9100/user/wzy/sogoudata MapPartitionsRDD[10] at textFile at <console>:24
scala> val key_1=source.map(x=>(x.split("\t")(2),1))
key_1: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[13] at map at <console>:26
scala> key_1.take(3)
res8: Array[(String, Int)] = Array((奇藝高清,1), (凡人修仙傳,1), (本本聯盟,1))
scala> val key_count=key_1.reduceByKey(_+_)
key_count: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[14] at reduceByKey at <console>:28
scala> key_count.take(3)
[Stage 11:======================================> (8 + 4) / 12]16/08/05 14:59:51 WARN TaskSetManager: Lost task 3.0 in stage 11.0 (TID 48, 10.130.152.17): java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3236)
at org.apache.hadoop.io.Text.setCapacity(Text.java:266)
at org.apache.hadoop.io.Text.append(Text.java:236)
at org.apache.hadoop.util.LineReader.readDefaultLine(LineReader.java:243)
at org.apache.hadoop.util.LineReader.readLine(LineReader.java:174)
.......
uj5u.com熱心網友回復:
2G確實太少了,如果想要查看是不是因為記憶體的緣故,開兩個埠,一個運行spark-shell統計,另外一個free -m 看看used用了多少轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/75853.html
標籤:Spark
下一篇:matlab的多目標遺傳演算法
