В data.fu есть хорошая реализация HyperLogLog для оценки кардинальности здесь
Однако он реализован как Accumulator
, что означает, что он будет работать только на редюсере, а не на объединителе (но он никогда не загрузит весь набор в память, как в обычном EvalFunc
). Почему data.fu не мог реализовать это как Algebraic
- и заполнять регистры на каждом объединителе, затем объединять и уменьшать результат? Я что-то упустил здесь?