【问题标题】:Spark: Converting RDD[(Long, Array[Double])] to RDD[(Long, Long, Double)]Spark:将 RDD[(Long, Array[Double])] 转换为 RDD[(Long, Long, Double)]
【发布时间】:2015-12-16 08:15:29
【问题描述】:

我有一个 RDD,每个条目的格式为(Long,Array[Double])。例如:

    val A = sc.parallelize( [(0, [5.0, 8.3]), (1, [4.2, 1.2])] )

我想将 A 转换为形式:

    [(0, 0, 5.0), (0, 1, 8.3), (1, 0, 4.2), (1, 1, 1.2)],

元组中的第二个元素是数组中值的索引。

【问题讨论】:

    标签: scala apache-spark rdd


    【解决方案1】:

    试试这个:

    A.flatMap { case (first, dbls) => dbls.zipWithIndex.map { case (dbl, ix) => (first, ix.toLong, dbl) } }
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      A.flatMap {case (v, arr) => arr.zipWithIndex.map {case (a, i) => (v, i, a)}}
      

      【讨论】:

        猜你喜欢
        • 2016-12-25
        • 1970-01-01
        • 2014-09-30
        • 2017-08-20
        • 2015-08-23
        • 2021-12-03
        • 2013-01-20
        • 1970-01-01
        • 2019-05-20
        相关资源
        最近更新 更多