我的RDD如下:
val rdd1 = sc.parallelize(Array((1,Array((3,4),(4,5))),(2,Array((4,2),(4,4),(3,9)))))
这是RDD[(Int,Array[(Int,Int)])]
,我想通过诸如RDD[(Int,(Int,Int)]
之类的操作获得flatMap
之类的结果。在此示例中,结果应为:
(1,(3,4))
(1,(4,5))
(2,(4,2))
(2,(4,4))
(2,(3,9))
我是新手,所以该怎么办? 非常感谢。
答案 0 :(得分:3)
您可以在这种情况下使用flatMap:
import { Injectable } from '@angular/core';
import { mongoose } from 'mongoose';
@Injectable()
export class BD {
private bd;
public test: string;
constructor(mongoose: mongoose){}
Test(){
mongoose('the url of the database')
this.bd = mongoose.connection;
this.bd.on('error', console.error.bind(console, 'error: impossible connection to the database'));
this.bd.once('open', ()=>{console.log('connected to the DB :}')})
}
}
答案 1 :(得分:2)
假设将RDD设为rd
。使用下面的代码根据需要获取数据
rdd1.flatMap(x => x._2.map(y => (x._1,y)))
map
中的内部flatmap
方法读取x._2
数组,并一次以y
读取数组的每个值。之后,平面图会将它们作为单独的项目提供。 x._1
是RDD中的第一个值。