【问题标题】:Operation on normalVectorRDD对 normalVectorRDD 的操作
【发布时间】:2021-02-22 07:10:47
【问题描述】:

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

谢谢

【问题讨论】:

    标签: scala apache-spark vector rdd normal-distribution


    【解决方案1】:

    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))
    

    【讨论】:

      猜你喜欢
      • 2016-03-10
      • 2017-12-20
      • 2014-09-07
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多