Spark中RDD内部的不同列表,而不是整个RDD

时间:2015-07-05 16:27:40

标签: python mapreduce apache-spark pyspark

我有这样的RDD:[(1,1,2),(2,2,3)]

我希望:[1,2,2,3]

提示:中间步骤:(1,2),(2,3)

我的代码:

suchRDD.flatMap(lambda k:k).distinct()

..将产生:

[1,2,3]

这不是我想要的。 (请不要介意不同类型的牙套)

如何减少每个嵌套列表然后展平以获得想要的结果? (请没有列表理解的例子,提醒:这是Spark)

1 个答案:

答案 0 :(得分:1)

在此步骤suchRDD.flatMap(lambda k:k)之后,您将获得:
[1,2,2,3]
不可能知道哪个数字来自哪个集合,所以你应该在flatMap之前区分元组。为此,您可以使用set(),Python中的内置函数来获取不同的项目。

rdd = sc.parallelize([(1,1,2),(2,2,3)])
rdd.map(set).flatMap(lambda x:x).collect()