我的RDD如下:
scala> topWithKeysSorted.take(10).foreach(println)
(1,[Lscala.Tuple4;@3e0c2650)
(2,[Lscala.Tuple4;@fef700c)
(3,[Lscala.Tuple4;@1ecb9068)
(4,[Lscala.Tuple4;@35b53a35)
(5,[Lscala.Tuple4;@6ad4a475)
(6,[Lscala.Tuple4;@1e4fd633)
(7,[Lscala.Tuple4;@5c455d42)
(8,[Lscala.Tuple4;@40bdb06d)
(9,[Lscala.Tuple4;@f854303)
(10,[Lscala.Tuple4;@6f9be28e)
scala> topWithKeysSorted.first
res38: (Int, Array[(Int, Int, String, Float)]) = (1,Array((1,2,Quest Q64 10 FT. x 10 FT. Slant Leg Instant U,59.98)))
如何将其转换为(Int, Int, Int, String, Float)
?我认为应该有一些简单而简单的方法,我不知道。
非常感谢。
答案 0 :(得分:1)
您可以使用pattern matching
轻松处理输入元组的各个部分:
val input = (1, Array((1, 2, "Quest Q64 10 FT. x 10 FT. Slant Leg Instant U", 59.98)))
input match { case (k, Array((v1, v2, v3, v4))) => (k, v1, v2, v3, v4) }
返回:
(1,1,2,Quest Q64 10 FT. x 10 FT. Slant Leg Instant U,59.98)
如果您想对RDD的每个元素应用此转换:
topWithKeysSorted.map{
case (k, Array((v1, v2, v3, v4))) => (k, v1, v2, v3, v4)
}