Pyspark的Union正好相反

时间:2017-02-21 03:25:05

标签: python apache-spark pyspark rdd

这似乎是一个微不足道的问题,但我无法在任何地方找到答案!

我有两个RDD,一个带有矢量化文章,另一个带有一堆停用词。我的第一直觉是使用过滤器功能,但显然你不能让两个RDD以这种方式进行交互。我知道Union允许RDD进行交互,但我需要与之完全相反,所以我可以过滤掉第一个RDD中的所有停用词。

非常感谢任何帮助。

编辑:

RDD1_filtered = RDD1.filter(lambda word: word not in RDD2)

两个RDD都是单词列表。我得到一个错误,说我不能有两个RDD交互

2 个答案:

答案 0 :(得分:3)

听起来你想要subtract功能:

>>> left = sc.parallelize(range(10))
>>> right = sc.parallelize([2, 6])
>>> left.subtract(right).collect()
[0, 1, 3, 4, 5, 7, 8, 9]

答案 1 :(得分:0)

如果您使用的是DataFrame,则可以使用Dataframe方法substract https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.DataFrame.subtract

<强>减法(其他)

  

返回一个新的 DataFrame ,其中包含此框架中的行,但不包括   另一个框架。

修改:似乎subtract也适用于RDD