根据另一个RDD过滤掉一个RDD

时间:2015-08-06 21:22:37

标签: scala filter apache-spark

我有两个RDD:

**rdd1**
id1 val1
id2 val2

**rdd2**
id1 v1
id2 v2
id1 v3
id8 v7
id1 v4
id3 v5
id6 v6

我想过滤RDD2,使其仅包含rdd1的键。所以输出将是

**output**
id1 v1
id2 v2
id1 v3
id1 v4

之前已经在stackoverflow中询问过,但是对于人们广播设置然后用于过滤的较小数据集,但我的问题是rdd1 size is> 500万,而rdd2超过100亿

请帮忙

1 个答案:

答案 0 :(得分:6)

使用join:

val res: RDD[(Long, V)] = rdd1.join(rdd2)
                              .map { case(k, (_, v2)) => (k, v2) }