之前在某个spark技术交流群里面,曾经有人问过我一个问题,那就是怎么将RDD[(String,ArrayBuffer[String])]转换为RDD[(String,String)]类型,我当时就告诉完了怎么转换的方法即用flatmap实现,但是,现在我遇到了同样的问题,怎么都想不起来当时是怎么写的了,也找不到那段代码了,我就用了一个比较守旧的方法实现的res是RDD[(String,ArrayBuffer[String])]类型的
res.flatMap( x =>{
val sub = ArrayBuffer.empty[(String,String)]
x._2.foreach( e =>{
sub.+=( ( x._1,e ) )
})
sub.iterator
})
用这个方法可以转换,但是这貌似很臃肿,简单点的方法就是:
res.flatMap{x => x._2.map( e =>( x._1,e )
此方法也可以实现。记录下来,以免自己忘记。现自己成立了一个技术交流主要是关于mongodb的群号:584106609,有想互相分享学习心得的朋友可以加一下该群。