Мне нужна помощь с заданиями Mapreduce в Hadoop.У меня следующая проблема.У меня большой набор данных, содержащий несколько документов + категория документа.Мне нужно рассчитать значение хи-квадрат для каждого термина в документах по категории.Это означает, что мне нужно количество вхождений за семестр в каждой категории + количество документов в каждой категории.
Мой подход заключается в том, чтобы иметь задание Mapreduce, которое подсчитывает количество вхождений для каждого слова для каждой категории:
Input Mapper: (docId, TextOfDocument) -> ({term, category},docID) Редуктор: (term, {category, NumberOfOccurences})
Проблема с этим заключается в том, что я теряю информацию о количестве документов в каждой категории, которая мне понадобится в моей следующей работе для расчета чи-square value.
Я думал о следующих решениях:
1) Используйте счетчики на категорию для хранения количества документов на категорию при чтении в документах.Я думаю, что это будет лучшим и самым простым решением.Проблема в том, что я не знаю количество категорий, поэтому мне нужно было бы динамически увеличивать количество счетчиков.Я не нашел способ сделать это в Hadoop (создать динамически увеличивающиеся счетчики)?Есть ли способ и как бы я это сделал?
2) Сначала запустите задание, посчитайте количество документов в категории и сохраните его как-нибудь.Я не знаю, как извлечь данные или сохранить, так как это удобно для чтения при чтении целых документов.
3) Как-то разделить его на дополнительные значения для типов данных и как-то подсчитать.
Может ли кто-нибудь помочь мне с этой проблемой?Какой подход будет лучшим?Или есть другие подходы?Спасибо за вашу помощь!