Guava Bloom Filter не поддерживает большие вставки?
Я использовал BloomFilter в guava v.11.0.1, и кажется, что я получаю исключение, когда моя вставка велика. Я попытался на 10 миллионов с 0,001 fpp, и это не удалось.
java.lang.IllegalArgumentException: Number of bits must be positive
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88)
at com.google.common.hash.BloomFilterStrategies.checkPositiveAndMakeMultipleOf64(BloomFilterStrategies.java:72)
at com.google.common.hash.BloomFilterStrategies.access$000(BloomFilterStrategies.java:18)
at com.google.common.hash.BloomFilterStrategies$From128ToN.withBits(BloomFilterStrategies.java:37)
at com.google.common.hash.BloomFilter.create(BloomFilter.java:192)
at com.ipg.collection.BloomFilterWritable.impl(BloomFilterWritable.java:43)
at com.ipg.collection.BloomFilterWritable.put(BloomFilterWritable.java:62)
at com.ipg.prophet.twitter.twitflow.archive.UnzipTweetsProcessAndUpload$ProcessorConsumer.process(UnzipTweetsProcessAndUpload.java:107)
at com.ipg.prophet.twitter.twitflow.archive.UnzipTweetsProcessAndUpload$ProcessorConsumer.run(UnzipTweetsProcessAndUpload.java:84)
at java.lang.Thread.run(Thread.java:662)
Я думаю, по крайней мере, он должен поддерживать столько вставок с таким высоким fpp, не так ли?
2 ответа
Извините за это, я виновник:)
Надеемся, что скоро мы сможем запустить следующую версию. Не время упоминать об этом, но есть и обратная сторона этой аварии: это означает, что мы определенно можем уничтожить текущую последовательную форму BF и связанный с ней вспомогательный код (который был самой аварией), который я пытаюсь исправить для месяц сейчас - между прочим, исправление, которое также решает эту проблему.
Редактировать: больше информации здесь (и в зарегистрированном номере Луи)
Вероятно, это следует указывать в качестве проблемы в Guava, а не в Stackru. (Между прочим, я подтверждаю это; и я в основном выяснил, что происходит.)
ОБНОВЛЕНИЕ: я подал проблему и запустил патч.