почему data.fu реализует HyperLogLog как накопитель, а не как алгебраический?

В data.fu есть хорошая реализация HyperLogLog для оценки кардинальности здесь

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


person ihadanny    schedule 06.03.2015    source источник
comment
Я голосую за то, чтобы закрыть этот вопрос, потому что вопросы о том, «почему» программное обеспечение работает так, как оно работает, здесь не обсуждаются. Вопрос может быть по теме программирования-SE, но я не уверен.   -  person Dennis Jaheruddin    schedule 06.06.2016


Ответы (1)


Исправлено в 1.3.0, и теперь он использует Algebraic. см. https://issues.apache.org/jira/browse/DATAFU-91

Подробнее о том, как это сокращает время выполнения задачи с 10 минут до 2 минут, см. на странице https://docs.google.com/spreadsheets/d/1oVYSCh22kufgQ49pgsuboKOMxDgz8N5yBtRpxuo69Lk/edit#gid=0

person ihadanny    schedule 06.06.2016