2016-04-25 6 views
3

Я хочу использовать ветер в искры, чтобы выполнить некоторые вычисления и в конечном итоге реализовать пакет R искру https://stackoverflow.com/questions/36727811/spark-weighted-repeated-median-smoothing-and-filteringИспользование ветер в искры

Однако, я столкнулся с проблемой, как начать работу с ветерком. Если в сочетании с искрой ветерок implicits, кажется, не импортируются правильно

import breeze.linalg.{ DenseVector => BDV } 
import breeze.stats.distributions.Poisson 
import org.apache.spark.sql.SQLContext 
import org.apache.spark.{ SparkConf, SparkContext} 
import breeze.stats.{ mean => bmean} 

import breeze.stats._ 

class RobfilterR extends App { 

    val conf = new SparkConf().setAppName("RobfilterR").setMaster("local[*]") 
    val sc = new SparkContext(conf) 
    val sql = new SQLContext(sc) 

    val poi = Poisson(3.0) 
    val x = poi.sample(10) 
    val v = BDV(x.toArray) 
    bmean(v) 

}

Но основные функции ветер не работают, потому что implicits не были импортированы правильно. Что здесь не так?

error: could not find implicit value for parameter impl: breeze.stats.mean.Impl[breeze.linalg.DenseVector[Int],VR] 
       bmean(v) 

ответ

6

Источником проблемы является аргументом вы передаете mean не импорт. Бриз просто не реализует среднее значение для Vector[Int].

import breeze.stats.mean 
import breeze.linalg.{Vector, DenseVector} 

val v = DenseVector(1, 2, 3) 
mean(v) 
// error: could not find implicit value for parameter impl: 
// breeze.stats.mean.Impl[breeze.linalg.DenseVector[Int],VR] 
//  mean(v) 

Если вы хотите, чтобы вычислить означает, что вы должны привести его к поддерживаемому типу первого:

import breeze.linalg.convert 

mean(convert(v, Double)) 
// Double = 2.0