在pyspark中过滤两个RDD

Posted

技术标签:

【中文标题】在pyspark中过滤两个RDD【英文标题】:filtering two RDD in pyspark 【发布时间】:2016-07-06 12:23:58 【问题描述】:

我想在这里做简单的过滤,我的 RDD 是

rdd1 = [96,104,112]

rdd2 = [112, 30, 384, 96, 288, 352, 104, 368]

所以结果应该是包含 rdd2 中不在 rdd1 中的元素的 RDD

所以它看起来像,

rdd3 = [30,384,288,352,368]

我们应该如何做到这一点

我试过这个,

 rdd3 = rdd1.map(lambda r: r != r in rdd2)

但这不起作用。如何解决这个问题,

提前致谢

【问题讨论】:

【参考方案1】:

您可以使用subtract method:

返回 self 中不包含在 other 中的每个值。

rdd1 = sc.parallelize([96,104,112])
rdd2 = sc.parallelize([112, 30, 384, 96, 288, 352, 104, 368])

rdd2.subtract(rdd1).collect()
## [384, 352, 368, 288, 30]

【讨论】:

以上是关于在pyspark中过滤两个RDD的主要内容,如果未能解决你的问题,请参考以下文章

基于其中一个数组中的 Null 值共同过滤 Pyspark 结构中的两个数组

PySpark - 如何根据列中的两个值从数据框中过滤出连续的行块

在 Pyspark 中使用整数与十进制值进行过滤

过滤值在 PySpark 中出现的次数

在PySpark / Python RDD中过滤

在 pyspark 中应用 udf 过滤功能