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]))