【问题标题】:Scala Spark - convert RDD[List[scala.Double]] to RDD[scala.Double]Scala Spark - 将 RDD[List[scala.Double]] 转换为 RDD[scala.Double]
【发布时间】:2015-09-21 14:19:37
【问题描述】:

我正在调用 mllib Statistics.corr() 函数并收到以下错误:

(x: org.apache.spark.api.java.JavaRDD[java.lang.Double],y: org.apache.spark.api.java.JavaRDD[java.lang.Double],method: String) scala.Double (x: org.apache.spark.rdd.RDD[scala.Double],y: org.apache.spark.rdd.RDD[scala.Double],method: String)scala.Double 不能应用于 (org.apache.spark.rdd.RDD[List[scala.Double]], org.apache.spark.rdd.RDD[List[scala.Double]], String)

println(Statistics.corr(a, b, "pearson"))

我需要做什么才能将我的数据类型转换为正确的 corr() 输入类型?

【问题讨论】:

  • 请显示ab的类型。看起来他们是RDD[List[Double]],但应该是RDD[Double]
  • 如报错所示,确实是RDD[List[Double]]的类型
  • 如问题所述,我想知道如何将 RDD[List[Double]] 转换为 RDD[Double]

标签: scala apache-spark


【解决方案1】:

尝试使用flatMap,带有身份功能:

val doubleRDD = listDoubleRDD.flatMap(identity)

【讨论】:

    【解决方案2】:

    正如this answer 中所建议的,您希望flatten 您的RDDs。可惜RDD上没有flatten方法,所以你可以使用flatMap(identity)

    println(Statistics.corr(a.flatMap(identity), b.flatMap(identity), "pearson"))
    

    【讨论】:

      猜你喜欢
      • 2017-06-13
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 2021-09-28
      • 2018-07-06
      • 2015-02-27
      相关资源
      最近更新 更多