Spark:将 RDD[(Long, Array[Double])] 转换为 RDD[(Long, Long, Double)]
Spark: Converting RDD[(Long, Array[Double])] to RDD[(Long, Long, Double)]
我有一个 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)],
其中元组中的第二个元素是数组中值的索引。
试试这个:
A.flatMap { case (first, dbls) => dbls.zipWithIndex.map { case (dbl, ix) => (first, ix.toLong, dbl) } }
你可以这样做:
A.flatMap {case (v, arr) => arr.zipWithIndex.map {case (a, i) => (v, i, a)}}
我有一个 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)],
其中元组中的第二个元素是数组中值的索引。
试试这个:
A.flatMap { case (first, dbls) => dbls.zipWithIndex.map { case (dbl, ix) => (first, ix.toLong, dbl) } }
你可以这样做:
A.flatMap {case (v, arr) => arr.zipWithIndex.map {case (a, i) => (v, i, a)}}