我想在spark中使用 Breeze 来执行一些计算并最终为spark https://stackoverflow.com/questions/36727811/spark-weighted-repeated-median-smoothing-and-filtering实现一个R包

但是,我在开始使用 Breeze 时遇到了问题。如果与 spark 结合使用, Breeze 的隐含信息似乎无法正确导入

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] 的 mean 。

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

关于scala - 在 Spark 中使用 Breeze ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36840853/

10-12 23:28