如何在spark中为mapPartition指定分区

时间:2015-11-06 08:21:05

标签: python apache-spark pyspark partition

我想要做的是分别计算每个列表,例如,如果我有5个列表SQLException,我想得到5个列表而没有6个我会做类似的事情:

([1,2,3,4,5,6],[2,3,4,5,6],[3,4,5,6],[4,5,6],[5,6])

然后剪切列表,以便我再次获得第一个列表。 有没有办法简单地分开计算?我不希望列表混合,它们可能有不同的大小。

谢谢

菲利普

1 个答案:

答案 0 :(得分:1)

据我了解您的意图,您只需在parallelize数据时将各个列表分开:

data = [[1,2,3,4,5,6], [2,3,4,5,6,7], [3,4,5,6,7,8],
    [4,5,6,7,8,9], [5,6,7,8,9,10]]

rdd = sc.parallelize(data)

rdd.take(1) # A single element of a RDD is a whole list
## [[1, 2, 3, 4, 5, 6]]

现在您只需map使用您选择的功能:

def drop_six(xs):
    return [x for x in xs if x != 6]

rdd.map(drop_six).take(3)
## [[1, 2, 3, 4, 5], [2, 3, 4, 5, 7], [3, 4, 5, 7, 8]]