微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对normalVectorRDD的操作

如何解决对normalVectorRDD的操作

我想用自己的平均值和自己的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))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。