2014-05-12 3 views
2

을 제기불꽃이 OutOfMemoryError를

import pyspark 
conf = (pyspark.SparkConf() 
    .setMaster("local") 
    .setAppName("My app") 
    .set("spark.executor.memory", "512m")) 
sc = pyspark.SparkContext(conf = conf)  #start the conf 
data =sc.textFile('/Users/tsangbosco/Downloads/transactions') 
data = data.flatMap(lambda x:x.split()).take(all) 

파일이 20G 내 컴퓨터에 관한 것입니다 내가 독립 실행 형 모드에서 프로그램을 실행할 때, 8 세대 램을 가지고, 그것은 OutOfMemoryError가 제기 :

Exception in thread "Local computation of job 12" java.lang.OutOfMemoryError: Java heap space 
    at org.apache.spark.api.python.PythonRDD$$anon$1.read(PythonRDD.scala:131) 
    at org.apache.spark.api.python.PythonRDD$$anon$1.next(PythonRDD.scala:119) 
    at org.apache.spark.api.python.PythonRDD$$anon$1.next(PythonRDD.scala:112) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:727) 
    at org.apache.spark.api.python.PythonRDD$$anon$1.foreach(PythonRDD.scala:112) 
    at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) 
    at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103) 
    at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47) 
    at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273) 
    at org.apache.spark.api.python.PythonRDD$$anon$1.to(PythonRDD.scala:112) 
    at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265) 
    at org.apache.spark.api.python.PythonRDD$$anon$1.toBuffer(PythonRDD.scala:112) 
    at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252) 
    at org.apache.spark.api.python.PythonRDD$$anon$1.toArray(PythonRDD.scala:112) 
    at org.apache.spark.api.java.JavaRDDLike$$anonfun$1.apply(JavaRDDLike.scala:259) 
    at org.apache.spark.api.java.JavaRDDLike$$anonfun$1.apply(JavaRDDLike.scala:259) 
    at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:884) 
    at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:884) 
    at org.apache.spark.scheduler.DAGScheduler.runLocallyWithinThread(DAGScheduler.scala:681) 
    at org.apache.spark.scheduler.DAGScheduler$$anon$1.run(DAGScheduler.scala:666) 

내 RAM보다 큰 파일을 처리 할 수 ​​없습니까? 어떻게 고칠 지 말해 줄 수 있니?

+0

http://stackoverflow.com/questions/21138751/spark-java-lang-outofmemoryerror-java-heap-space/22742982#22742982 – samthebest

답변

2

어떤 경우에는 스파크가 처리 할 수 ​​있습니다. 그러나 take을 사용하여 Spark이 모든 데이터를 메모리 (메모리)로 가져 오도록합니다. 이 경우 saveAsTextFile처럼 파일에 파일을 저장해야합니다.

일부 데이터를 살펴 보려면 sample 또는 takeSample을 사용할 수 있습니다.

+0

mlib를 사용하여 파일의 모든 기능 샘플을 학습하려면 어떻게 할 수 있습니까? 나는 모든 표본을 훈련시키기 위해 보낸다? 감사합니다 – BoscoTsang

+0

실제로, mlib에는 많은 알고리즘이 있습니다. 어느 쪽을 사용 하시겠습니까? – zsxwing

+0

예를 들어, Logistic Regression을 사용하여 데이터를 학습하고 싶습니다. 파일에는 여러 열 데이터가 있으며 각 열은 피쳐입니다. 피쳐의 모든 샘플을 로지스틱 회귀로 훈련시킬 수 있습니까? – BoscoTsang

관련 문제