【问题标题】:Scala Spark - using RDD with mllibScala Spark - 将 RDD 与 mllib 一起使用
【发布时间】:2015-12-18 15:03:39
【问题描述】:

我有RDD[List[Double],List[Double]]形式的数据,例如:

sampleData =
    (
        ((1.1, 1.2, 1.3), (1.1, 1.5, 1.2)),
        ((3.0, 3.3, 3.3), (3.1, 3.2, 3.6))
    )

我想调用 Statistics.corr(a, b) 其中 a 来自第一个 List[Double] 而 b 来自第二个 List[Double]

我想要的结果是 (1.1, 1.2, 1.3), (1.1, 1.5, 1.2) 和 (3.0, 3.3, 3.3), (3.1, 3.2, 3.6) 的 corr() 函数的 2 个相关值

我尝试的解决方案是:

Statistics.corr(sampleData.flatMap(_._1), sampleData.flatMap(_._2))

这给了我一个 (1.1, 1.2, 1.3, 3.0, 3.3, 3.3), (1.1, 1.5, 1.2, 3.1, 3.2, 3.6) 的相关性,这不是我想要的

【问题讨论】:

    标签: scala apache-spark apache-spark-mllib


    【解决方案1】:

    这需要地图,而不是平面地图,因为您希望将 RDD 的行分开。

    不幸的是,我还不知道可以在两个 List[Double] 上运行的可序列化相关函数。我检查的第一个地方是Pearson correlation from Apache Commons,但它不是可序列化的。您可能必须编写自己的函数(但我会先花更多的精力寻找)​​。一旦你有了一个相关函数,你会像下面这样使用它:

    sampleData.map(x => correlation(x._1,x._2))
    

    这仍然是一个 RDD,除了订单之外,它不会引用它来自的原始行,因此您可能希望传递原始数据(或者,至少,它曾经拥有的任何 id) .

    【讨论】:

      猜你喜欢
      • 2016-08-27
      • 2016-12-13
      • 2017-12-20
      • 2015-06-05
      • 1970-01-01
      • 2015-07-15
      • 2018-01-10
      • 2017-08-10
      • 2022-07-30
      相关资源
      最近更新 更多