Я использую hadoop для обработки последовательности аналитических записей для моего приложения. Я хочу классифицировать пользователей на основе того, какие события я вижу в их потоке, а затем использовать эту информацию на более поздней стадии при повторной итерации по потоку. Например, предположим, что я хочу сгенерировать данные обо всех пользователях, которые никогда не активируют мое приложение.
Я могу определить, кто никогда не активируется, итерируя по потоку один раз, как часть моего 1-го раунда сокращения.
Вопрос в том, куда я помещаю данные, которые "пользователь X никогда не активировал", чтобы в следующий раз, когда я перебираю поток в моем устройстве отображения 2-го раунда, я мог найти этот факт? У меня есть несколько идей, но я не уверен, какой правильный путь hasoop:
- выведите побочный файл из моего редуктора 1-го раунда, содержащий список пользователей, прочитайте его во втором раунде - как мне избежать чтения всего файла в память, как мне работать с несколькими побочными файлами с нескольких фронтов -конечные редукторы (есть ли хороший способ сортировки / объединения побочных файлов)?
- буферизует все события пользователя в памяти в моем редукторе, так что я могу пометить их все как «не активированные», прежде чем выводить их на диск - кажется немного странным.
Является ли один из тех "правильных путей", есть ли другой способ, по которому я скучаю?
Я использую AWS Elastic MapReduce.