Я новичок в Spark, и мне интересно, как сделать что-то, что довольно просто сделать с помощью Cascading framework.
Предположим, у меня есть следующий набор данных:
<date> <cpt_id> <mesure_type> <value>
20160603093021556 cpt1 idx1 11
20160603093021556 cpt1 idx2 22
20160603093021556 cpt1 idx3 33
20160603093021556 cpt1 idx4 44
20160603113021556 cpt2 idx1 09
20160603113021556 cpt2 idx2 45
20160603113021556 cpt2 idx3 66
20160603193021556 cpt1 idx1 13
20160603193021556 cpt1 idx2 25
20160603193021556 cpt1 idx3 33
20160603193021556 cpt1 idx4 44
и я хочу агрегировать это, чтобы получить следующие результаты (своего рода денормализация):
<date> <cpt_id> <idx1> <idx2> <idx3> <idx4>
20160603093021556 cpt1 11 22 33 44
20160603113021556 cpt2 09 45 66 null
20160603193021556 cpt1 13 25 33 44
При каскадировании я бы использовал GroupBy (с датой и идентификатором cpt в качестве ключей группировки) и буфер Every для создания денормализованных кортежей.
Со Spark кажется, что потребуется функция определяемого пользователем агрегатора, но она доступна только начиная с Spark 1.5 (и 1.3.1 доступна в моем кластере Yarn).
Я не понимаю, как сделать такой процесс с API 1.3.1.
Спасибо за вашу помощь и предложение