我在guava v.11.0.1中使用BloomFilter,当我的插入很大时,我似乎得到了异常。我用0.001 fpp尝试了1000万,但它失败了。
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的插入,不应该吗?
答案 0 :(得分:9)
对此抱歉,我是罪魁祸首:)
希望我们能尽快推出下一个版本。不是时候提到这个,但是这次事故还有一个好处:这意味着我们绝对可以杀死当前的BF形式及其相关的支持代码(这本身就是一个意外),我正试图修复{{ 3}} - 顺便说一下,修复它也解决了这个问题。
修改:更多信息for a month now(以及路易斯提交的问题)
答案 1 :(得分:5)
这可能应该在Guava上提交,而不是在StackOverflow上。 (顺便提一下,我确认了一下;我大部分都知道发生了什么。)
更新:我已经提交了issue并开始修补。