如何在PySpark RDD中返回不同的集合?

时间:2019-05-22 23:01:58

标签: python python-3.x apache-spark pyspark rdd

我有一个具有不同值集的RDD,并且我想返回原始RDD中的所有不同集。有没有诸如“区别”之类的关键术语?

example = sc.parallelize([{1}, {2}, {3}, {1}])
example.collect()

这将输出:

[{1}, {2}, {3}, {1}]

我尝试了example.distinct().collect(),而我期望的答案是带有不同集合的RDD:

[{1}, {2}, {3}]  # expected result

有什么办法吗?

1 个答案:

答案 0 :(得分:2)

转换为frozenset,因为它们可以被散列。然后,您可以照常呼叫distinct

example.map(frozenset).distinct().map(set).collect()
# [{1}, {2}, {3}]

根据保险柜的建议,您还可以在删除重复项之前将集合转换为tuple