Я работаю над анализом большого набора данных, в котором используется запись с первичным и вторичным ключами:
- Первичный ключ
- Вторичный ключ
- Дополнительные поля
Первичное-вторичное отображение - «один ко многим» (первичное - «один»). Я хотел бы использовать количество уникальных вторичных серверов на первичное в моем выводе. Максимум будет не более нескольких тысяч вторичных серверов.
Я могу придумать два способа сделать это:
- Определить настраиваемый тип записи для вывода из Map, который содержит набор (хеш-таблица, список, что угодно) уникальных вторичных объектов. Выполните все в одном цикле преобразования / уменьшения, где редуктор объединяет множество вторичных ключей.
- Выполните первичный / вторичный подсчет в своей собственной операции и используйте вывод во вторичном задании.
Первый может столкнуться с некоторыми проблемами размера с выводом (где набор ключей может получить большое значение). Последнее потребует итерации по исходным данным дважды.
Может кто-нибудь посоветовать, какой лучший подход был бы здесь?
Я также рассматриваю возможность использования Hive - может быть, имеет смысл сгенерировать таблицу, которая содержит все эти данные и выполнить группировку с запросами Hive?