normalvectorrdd上的scala运算

uajslkp6  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(409)

我想用我自己的平均值和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, numRows = 180, numCols = 20).map(v => mean + sigma * v)

我不理解这个错误,因为在scala文档中,他们也做了randomrdds.normal(sc,n,p,seed).map(lambda v:mean+sigma*v)
谢谢

uqzxnwby

uqzxnwby1#

spark医生。引用.normal()方法:

val data = 
 RandomRDDs.normalRDD(spark.sparkContext, 50, 1).map(v => mean + sigma * v)

实际上运行正常。
如果需要对向量应用变换:

val data0 = 
  RandomRDDs.normalVectorRDD(spark.sparkContext, numRows = 180, numCols = 20).map(v => v.toArray.map(v => mean + sigma * v))

相关问题