Spark redubykey - минимум списка поэлементно

У меня возникли проблемы с использованием функций Spark reduByKey / groupByKey.

У меня есть пара RDD формы (datetime, [a1, b1, c1, d1]), (datetime, [a2, b2, c2, d2]) ...

Я хотел бы сгруппировать эти элементы по ключу (здесь же дата и время) и получить выходное значение, соответствующее списку для поэлементного минимума.

В моем примере вывод будет:

(datetime, [min(a1,a2), min(b1,b2), min(c1,c2), min(d1,d2)])

Я пробовал:

reduceByKey(lambda (a, b): [min(x) for x in zip(a, b)])

но пока безуспешно.

заранее спасибо

1 ответ

Ну, для этого вопроса у нас есть простое решение.

В вашей функции карты, прежде чем уменьшить. Вы должны установить свои данные так:

(datetime, ([a1, b1, c1, d1],))

Обратите внимание, что я вставляю список в кортеж с запятой. Это я делаю "открытый" кортеж. И как это вы можете сделать свой reduceByKey по умолчанию:

reduceByKey(lambda a, b: a + b)

и вы получите rdd вот так:

(datetime, ([a1, b1, c1, d1], [a2, b2, c2, d2]))
Другие вопросы по тегам