Если число уникальных значений на ключ конечно и если мы можем хранить их в Установите .
Внутри редуктора выполните следующие действия:
foreach value for a given key
iterate each value and add to a set
emit key, set.size()
Пример
Key 101 - Value [ABC, ABC, ABC, XYZ, XYZ, XYZ]
101, create a set s with elements [ABC, XYZ]
emit 101,2 where 2 is s.size()
Key 102 - Value [XYZ, XYZ]
102, create a set s with elements [XYZ]
emit 102, 1 where 1 is s.size()
Карта для отображения значения ключа как есть.Использование комбинера также рекомендуется.