在火花中使用 breeze

Using breeze in spark

我想在spark中使用breeze进行一些计算,最终实现一个spark的R包

但是,我在开始使用 breeze 时遇到了问题。如果与 spark 结合使用 breeze 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)

}

但是基本的 breeze 函数不再起作用,因为隐含函数没有正确导入。这里有什么问题?

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

问题的根源是您传递给 mean 而不是导入的参数。 Breeze 根本没有实现 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