我有一个关于在配对RDD上使用foldByKey的问题。这是我的示例数据:
val data: Array[(String, Array[Int])] = Array((120,Array(10, 4, 108, 520)), (2,Array(25, 11, 270, 180, 14)))
我想以下列方式获取数据:
val data: Array[(String, String)] = Array((120, "10 4 108 520"), (2, "25 11 270 180 14"))
我认为foldByKey是要使用的函数,任何有关如何使用它来将我的int数组转换为字符串的帮助都会很棒。
答案 0 :(得分:1)
实际上,由于您的数据已存储在数组中,因此您只需要mapValues
来电:
data.mapValues(_.mkString(" "))
但是,如果您的阵列太大,并且您实际将其存储为:
120 | 10
120 | 4
120 | 108
etc
然后你会想要使用reduceByKey
或aggregateByKey
...取决于是否需要维护订单,因为它变成了字符串。
答案 1 :(得分:0)
val data: Array[(String, Array[Int])] = Array(("120",Array(10, 4, 108, 520)), ("2",Array(25, 11, 270, 180, 14)))
val d=data.map(x=>(x._1,x._2.mkString(" ")))
val e=sc.parallelize(d)
e.foldByKey("")(_+_).collect
如果不是直截了当,请纠正我。