我想在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/