我有下表作为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] 删除。
我来说两句