Python 如何在PySpark RDD中返回不同的集合?
我有一个RDD,它有一组不同的值,我想返回原始RDD中所有不同的集。是否有诸如distinct之类的关键术语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 有什么办法吗?转换为冻结集,因为它们可以散
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
,因为我假设他们想对集合做些什么(而不是只收集之后的结果)。