2014-07-20 4 views
3

Play!에서 Apache Spark 1.0.1을 실행하는 데 문제가 있습니다. 앱. 현재, Play 내에서 Spark를 실행하려고합니다! Spark 내에서 기본적인 기계 학습을 사용하십시오.Apache Spark - java.lang.NoSuchMethodError : breeze.linalg.DenseVector

여기 내 응용 프로그램 작성의 :

def sparkFactory: SparkContext = { 
    val logFile = "public/README.md" // Should be some file on your system 
    val driverHost = "localhost" 
    val conf = new SparkConf(false) // skip loading external settings 
     .setMaster("local[4]") // run locally with enough threads 
     .setAppName("firstSparkApp") 
     .set("spark.logConf", "true") 
     .set("spark.driver.host", s"$driverHost") 
    new SparkContext(conf) 
    } 

그리고 여기가 크고 마른 매트릭스의 기본적인 발견을 수행하려고 할 때 오류입니다 :

[error] o.a.s.e.ExecutorUncaughtExceptionHandler - Uncaught exception in thread Thread[Executor task launch worker-3,5,main] 
java.lang.NoSuchMethodError: breeze.linalg.DenseVector$.dv_v_ZeroIdempotent_InPlaceOp_Double_OpAdd()Lbreeze/linalg/operators/BinaryUpdateRegistry; 
    at org.apache.spark.mllib.linalg.distributed.RowMatrix$$anonfun$5.apply(RowMatrix.scala:313) ~[spark-mllib_2.10-1.0.1.jar:1.0.1] 
    at org.apache.spark.mllib.linalg.distributed.RowMatrix$$anonfun$5.apply(RowMatrix.scala:313) ~[spark-mllib_2.10-1.0.1.jar:1.0.1] 
    at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144) ~[scala-library-2.10.4.jar:na] 
    at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:144) ~[scala-library-2.10.4.jar:na] 
    at scala.collection.Iterator$class.foreach(Iterator.scala:727) ~[scala-library-2.10.4.jar:na] 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) ~[scala-library-2.10.4.jar:na] 

위 다음에 의해 트리거되는 오류 :

def computePrincipalComponents(datasetId: String) = Action { 
    val datapoints = DataPoint.listByDataset(datasetId) 

    // load the data into spark 
    val rows = datapoints.map(_.data).map { row => 
     row.map(_.toDouble) 
    } 
    val RDDRows = WorkingSpark.context.makeRDD(rows).map { line => 
     Vectors.dense(line) 
    } 

    val mat = new RowMatrix(RDDRows) 
    val result = mat.computePrincipalComponents(mat.numCols().toInt) 


    Ok(result.toString) 
    } 

이것은 종속성 문제인 것처럼 보이지만 어디서 시작되는지는 알 수 없습니다. 어떤 아이디어?

답변

2

아 참 참으로이 문제는 종속성 충돌로 인한 것입니다. 분명히 새로운 Spark는 내가 가져온 버전에서 사용할 수 없었던 새로운 Breeze 메서드를 사용합니다. 내 Play에서 Breeze를 제거함으로써! 파일 빌드 위의 함수를 정상적으로 실행할 수있었습니다.

-0.23490049167080018 0.4371989078912155 0.5344916752692394 ... (6 total) 
-0.43624389448418854 0.531880914138611  0.1854269324452522 ... 
-0.5312372137092107 0.17954211389001487 -0.456583286485726 ... 
-0.5172743086226219 -0.2726152326516076 -0.36740474569706394 ... 
-0.3996400343756039 -0.5147253632175663 0.303449047782936  ... 
-0.21216780828347453 -0.39301803119012546 0.4943679121187219 ... 
: 관심있는 사람들을 위해

, 여기에 출력의