如何通过Spark中另一个RDD的值过滤RDD

时间:2018-08-06 04:52:44

标签: scala apache-spark

现在,我有两个rdds。rdd1中的记录如下:

A : B,C,D 

A是关键数据,而B / C / D是值。 rdd2中的记录如下:

A : feaA  
B : feaB

...

feaA是键A的特征数据。 我想要的是RDD,如下所示:

(A,feaA):(B,feaB),(C,feaC),(D,feaD) 

现在,我的方法是反转rdd1中的键/值对,然后与rdd2联接:

A : B,C,D  

将键值对反转为以下内容:

B:A  
C:A  
D:A

然后加入rdd1,我们可以获得:

(B,feaB) : A  
(C,feaC) : A  
(D,feaD) : A 

反向高于RDD:

A : (B,feaB)  
A :(C,feaC)  
A : (D,feaD) 

groupByKey,返回:

A:((B,feaB),(C,feaC),(D,feaD))

但是rdd1和rdd2都有10亿条记录。上面的方法对我来说太慢了。我也尝试广播rdd2,但是它太大而无法广播。在那儿 任何更快的方法?

0 个答案:

没有答案