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

Python 如何在PySpark RDD中返回不同的集合?,python,python-3.x,apache-spark,pyspark,rdd,Python,Python 3.x,Apache Spark,Pyspark,Rdd,我有一个RDD,它有一组不同的值,我想返回原始RDD中所有不同的集。是否有诸如distinct之类的关键术语 example=sc.parallelize([{1},{2},{3},{1}]) 示例.collect() 这将产生: [{1}, {2}, {3}, {1}] 我尝试了example.distinct().collect(),我期望的答案是一个具有不同集合的RDD: [{1}, {2}, {3}] # expected result 有什么办法吗?转换为冻结集,因为它们可以散

我有一个RDD,它有一组不同的值,我想返回原始RDD中所有不同的集。是否有诸如distinct之类的关键术语

example=sc.parallelize([{1},{2},{3},{1}])
示例.collect()
这将产生:

[{1}, {2}, {3}, {1}]
我尝试了
example.distinct().collect()
,我期望的答案是一个具有不同集合的RDD:

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

有什么办法吗?

转换为
冻结集
,因为它们可以散列。然后,您可以像往常一样调用
distinct

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

正如pault所建议的,您还可以在删除重复项之前将集合转换为
tuple

它还可以映射到
tuple
@pault没错。我首先建议使用
frozensets
,因为我假设他们想对集合做些什么(而不是只收集之后的结果)。