Я новичок в Hadoop и пытаюсь запустить задание mapupduce hadoop в Java, чтобы объединить некоторые данные и вывести их в виде файлов CSV. Я использую hadoop 3.1.1.У меня есть набор данных, содержащий смешанные данные, и это файлы JSON ежедневно.Одна строка на запись, и каждая запись имеет ключ соединения (id), а также тип с различными значениями (typeA, typeB и т. Д.), А также некоторые другие поля.У меня есть много строк, как показано ниже, и typeA и typeB могут быть далеко друг от друга из-за разбиения файлов JSON
Вот как это выглядит:
id starttime endtime type otherfields
1 x y typeA foo,bar
1 a b typeB hello,world
2 p q typeA foo,bar
2 r s typeC hadoop,mapreduce
1 c d typeB foo1,bar1
Теперь мой вариант использования заключается в специальном присоединении к typeAи typeB, используя ключ соединения (id), и я хочу, чтобы результат выглядел следующим образом
Я также хотел бы добавить, что может быть много записей typeB для одного typeA с тем же идентификатором.Существует отношение один ко многим, поэтому я хотел бы иметь по две строки для каждой записи typeB, где значения типа A повторяются.
id,starttimetypeA,endtimetypeA,starttimetypeB,endtimetypeB,otherfieldstypeA,otherfieldstypeB
1, x, y, p, q, foo, bar, hello, world
1, x, y, c, d, foo1, bar1, hello, world
Я читал о соединении на стороне карты и уменьшении соединения на стороне.Что было бы хорошей стратегией для объединения этого набора данных?