Разделить rdd с искровым

У меня есть rdd с похожими

[u'1,0,0,0,0,0,0,0,1,2013,52,0,4,1,0', u'1,0,0,0,1,1,0,1,1,2012,49,1,1,0,1', u'1,0,0,0,1,1,0,0,1,2012,49,1,1,0,1', u'0,1,0,0,0,0,1,1,1,2014,45,0,0,1,0'] 

Есть ли способ получить три отдельных rdds, например, создать фильтр на основе значения столбца года?

 [u'1,0,0,0,0,0,0,0,1,2013,52,0,4,1,0'] 

а также

 [ u'1,0,0,0,1,1,0,1,1,2012,49,1,1,0,1', u'1,0,0,0,1,1,0,0,1,2012,49,1,1,0,1'] 

а также

  [u'0,1,0,0,0,0,1,1,1,2014,45,0,0,1,0'] 

Вот один из способов использования groupBy , и если ваш исходный RDD имеет имя переменной rdd :

 rdd = rdd.groupBy(lambda x: x.split(",")[9]) new_rdds = [sc.parallelize(x[1]) for x in rdd.collect()] for x in new_rdds: print x.collect() 

Там есть лучшее решение, чем это. Я многому научился, работая над этим и потратил впустую столько времени, что не смог удержаться, чтобы опубликовать его.

 In [60]: a Out[60]: [u'1,0,0,0,0,0,0,0,1,2013,52,0,4,1,0', u'1,0,0,0,1,1,0,1,1,2012,49,1,1,0,1', u'1,0,0,0,1,1,0,0,1,2012,49,1,1,0,1', u'0,1,0,0,0,0,1,1,1,2014,45,0,0,1,0'] 

Мне очень сложно работать со строками, поэтому я изменил их на ints.

 In [61]: b=[map(int,elem.split(',')) for elem in a] In [62]: b Out[62]: [[1, 0, 0, 0, 0, 0, 0, 0, 1, 2013, 52, 0, 4, 1, 0], [1, 0, 0, 0, 1, 1, 0, 1, 1, 2012, 49, 1, 1, 0, 1], [1, 0, 0, 0, 1, 1, 0, 0, 1, 2012, 49, 1, 1, 0, 1], [0, 1, 0, 0, 0, 0, 1, 1, 1, 2014, 45, 0, 0, 1, 0]] 

Сортировка b в зависимости от года.

 In [63]: b_s=sorted(b,key=itemgetter(-6)) In [64]: b_s Out[64]: [[1, 0, 0, 0, 1, 1, 0, 1, 1, 2012, 49, 1, 1, 0, 1], [1, 0, 0, 0, 1, 1, 0, 0, 1, 2012, 49, 1, 1, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 1, 2013, 52, 0, 4, 1, 0], [0, 1, 0, 0, 0, 0, 1, 1, 1, 2014, 45, 0, 0, 1, 0]] 

Использование groupby из операторского модуля в группу по году.

 In [65]: [list(g) for k,g in groupby(b_s,key=itemgetter(-6))] Out[65]: [[[1, 0, 0, 0, 1, 1, 0, 1, 1, 2012, 49, 1, 1, 0, 1], [1, 0, 0, 0, 1, 1, 0, 0, 1, 2012, 49, 1, 1, 0, 1]], [[1, 0, 0, 0, 0, 0, 0, 0, 1, 2013, 52, 0, 4, 1, 0]], [[0, 1, 0, 0, 0, 0, 1, 1, 1, 2014, 45, 0, 0, 1, 0]]]