Algebird HyperLogLog - зарегистрировать индекс и зарегистрировать биты значений
Я новичок в HyperLogLog и Scala и пытаюсь использовать реализацию HyperLogLog в Twitter Algebird - https://github.com/twitter/algebird/blob/develop/algebird-core/src/main/scala/com/twitter/algebird/HyperLogLog.scala.
В других реализациях HyperLogLog (как это для Postgres https://github.com/aggregateknowledge/postgresql-hll) я могу настроить алгоритм с количеством сегментов (используя log2m), а также шириной регистров на основе на мои ожидаемые требования плотности и точности.
У меня возникают проблемы с пониманием того, как эти значения используются / вычисляются в реализации Algebird. В частности, я использую HyperLogLogMonoid
учебный класс.
1 ответ
Единственным параметром алгоритма HyperLogLog является количество сегментов m
, где m = 2 ^ b
, HyperLogLogMonoid
параметризован val bits: Int
, который является эквивалентом параметра b
в оригинальной статье.