如何从RDD中删除重复值[PYSPARK]

巴蒂王子

我有下表作为RDD:

Key Value
1    y
1    y
1    y
1    n
1    n
2    y
2    n
2    n

我想从中删除所有重复项Value

输出应如下所示:

Key Value
1    y
1    n
2    y
2    n

在pyspark中工作时,输出应作为键值对的列表出现,如下所示:

[(u'1',u'n'),(u'2',u'n')]

我不知道如何在for这里应用循环。在普通的Python程序中,这将非常容易。

我想知道是否有pyspark相同的功能

米克尔·乌基娅

恐怕我对python一无所知,因此我在此答案中提供的所有引用和代码都是相对于java的但是,将其转换为python代码并不难

您应该浏览以下网页它重定向到Spark的官方网页,该网页提供了Spark支持的所有转换和操作的列表

如果我没记错的话,最好的方法(以您的情况为准)将使用distinct()转换,该转换将返回一个包含源数据集的不同元素的新数据集(取自链接)。在Java中,它将类似于:

JavaPairRDD<Integer,String> myDataSet = //already obtained somewhere else
JavaPairRDD<Integer,String> distinctSet = myDataSet.distinct();

这样,例如:

Partition 1:

1-y | 1-y | 1-y | 2-y
2-y | 2-n | 1-n | 1-n

Partition 2:

2-g | 1-y | 2-y | 2-n
1-y | 2-n | 1-n | 1-n

将转换为:

Partition 1:

1-y | 2-y
1-n | 2-n 

Partition 2:

1-y | 2-g | 2-y
1-n | 2-n |

当然,您仍然会有多个RDD数据集,每个数据集都包含一个不同元素的列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章