问题描述
我想用自己的平均值和自己的sigma创建一个RDD [Vector],我已经这样做了:
val mean = Random.nextInt(100)
val sigma = 2
val data: RDD[Vector] = RandomrDDs.normalVectorRDD(sc,numRows = 180,numCols = 20).map(v => mean + sigma * v)
overloaded method value * with alternatives:
(x: Double)Double <and>
(x: Float)Float <and>
(x: Long)Long <and>
(x: Int)Int <and>
(x: Char)Int <and>
(x: Short)Int <and>
(x: Byte)Int
cannot be applied to (org.apache.spark.mllib.linalg.Vector)
val data: RDD[Vector] = RandomrDDs.normalVectorRDD(sc,numCols = 20).map(v => mean + sigma * v)
我不理解此错误,因为在scala文档中,它们确实执行RandomrDDs.normal(sc,n,p,seed).map(lambda v:mean + sigma * v)
谢谢
解决方法
Spark文档。引用了.normal()方法:
val data =
RandomRDDs.normalRDD(spark.sparkContext,50,1).map(v => mean + sigma * v)
这实际上运行正常。
如果您需要将转换应用于Vector:
val data0 =
RandomRDDs.normalVectorRDD(spark.sparkContext,numRows = 180,numCols = 20).map(v => v.toArray.map(v => mean + sigma * v))