2016-03-01 4 views
1

Я попытался понять функцию toBreeze в Spark. И я обнаружил, что проблема ниже:toBreeze Spark function scala

<console>:37: error: method foreachActive in trait Vector cannot be accessed in org.apache.spark.mllib.linalg.Vector 
     vector.foreachActive{case (index,value) => 

dataSS является org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]

dataSS.collect().foreach { vector => 
    vector.foreachActive { case (index,value) => 
    matData(i, index) = value 
    } 
    i +=1 
} 
+0

Можете ли вы объяснить больше, после ввода данных ввода? – oluies

+0

Какую версию Spark вы используете? Насколько я знаю, метод 'foreachActive' на' org.apache.spark.mllib.linalg.Vector' стал доступен только в Spark 1.6. Кстати, метод 'toBreeze' (который вы фактически не используете) закрыт для Spark. –

+0

что вы делаете ??? – eliasah

ответ

0

я заключаю foreachActive должна быть частной в версии Спарк вы используете.

foreachActive общедоступна и отлично работает для меня в Спарк 2.0.2

Однако asBreeze является частным:

private[spark] override def asBreeze: BV[Double] 

и при вызове создает эквивалентную ошибку в который вы видите:

error: method asBreeze in trait Vector cannot be accessed in org.apache.spark.ml.linalg.Vector 

(это очень раздражает и не знает, что только scaladoc)