Spark:将RDD [(长,数组[双]]]转换为RDD [(长,长,双)]

时间:2015-12-16 08:15:30

标签: scala apache-spark rdd

我有一个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)],

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

2 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:1)

你可以这样做:

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