Вы можете использовать метод reduce()
.Попробуйте это:
>>> rdd.reduce(lambda x,y:
(min(x[0],y[0]),min(x[1],y[1]),min(x[2],y[2]),min(x[3],y[3])))
(1, 1, 3, 1)
>>> rdd.reduce(lambda x,y: (max(x[0],y[0]),max(x[1],y[1]),max(x[2],y[2]),max(x[3],y[3])))
(5, 3, 4, 5)
Парные проверки мин / макс для каждой записи кортежа на протяжении всего rdd.
Немного короче, но труднее читать:
>>> rdd.reduce(lambda x,y: tuple(map(min, zip(x,y))))
(1, 1, 3, 1)
>>> rdd.reduce(lambda x,y: tuple(map(max, zip(x,y))))
(5, 3, 4, 5)
Вы можете думать об этом как о расширении следующим образом:
lambda x,y: tuple(map(max, zip(x,y))) =
lambda x,y: tuple(map(max, [(x[0],y[0]),(x[1],y[1]),(x[2],y[2]),(x[3],y[3])]) =
lambda x,y: tuple([max(x[0],y[0]),max(x[1],y[1]),max(x[2],y[2]),max(x[3],y[3])]) =
lambda x,y: (max(x[0],y[0]),max(x[1],y[1]),max(x[2],y[2]),max(x[3],y[3]))
На практике используются генераторы, поэтому необходим конечный tuple()
.