Skip to main content
 首页 » 编程设计

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

2024年09月03日39over140

我有一个 RDD,具有一组不同的值,我想从原始 RDD 返回所有不同的集合。是否有任何关键术语,例如 distinct?

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

这个输出:

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

我尝试了 example.distinct().collect(),我期待的答案是一个具有不同集合的 RDD:

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

有什么办法吗?

请您参考如下方法:

转换为 frozenset 因为这些可以被散列。然后您可以像往常一样调用 distinct:

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

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