Сделайте это в вашем искровом кластере, например ::10000
In []:
(rdd.map(lambda x: (x[1][0][0], x[1][1], x[1][0][2]))
.sortBy(lambda x: x[0])
.flatMap(lambda x: x)
.collect())
Out[]:
['0744632', '18090865', 43.72, '0744632', '18090865', 43.72, '0750567',
'18042872', 43.01, '0753877', '18050868', 43.25]
С другой стороны
In []:
import operator as op
(rdd.map(lambda x: (x[1][0][0], x[1][1], x[1][0][2]))
.sortBy(lambda x: x[0])
.reduce(op.add))
Out[]:
('0744632', '18090865', 43.72, '0744632', '18090865', 43.72, '0750567',
'18042872', 43.01, '0753877', '18050868', 43.25)
Это выглядит довольно громоздкой структурой, если вы имели в виду список кортежей, то просто исключите flatMap()
:
In []:
(rdd.map(lambda x: (x[1][0][0], x[1][1], x[1][0][2]))
.sortBy(lambda x: x[0])
.collect())
Out[]:
[('0744632', '18090865', 43.72),
('0744632', '18090865', 43.72),
('0750567', '18042872', 43.01),
('0753877', '18050868', 43.25)]