在火花中使用 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
我想在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