Guava Bloom Filter不支持大型插入



我在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的插入,不是吗?

很抱歉,我是罪魁祸首:)

希望我们能尽快推出下一个版本。现在还不是提到这一点的时候,但这次事故有一个好处:这意味着我们肯定可以杀死BF的当前串行形式及其相关支持代码(这本身就是一次事故),我现在正试图修复一个月——顺便说一句,对它的修复也修复了这个问题。

编辑:更多信息请点击此处(以及Louis提交的问题)

这可能应该作为问题提交到Guava,而不是StackOverflow。(顺便说一句,我确认了这一点;我基本上已经弄清楚了发生了什么。)

更新:我已经提交了一个问题并启动了一个补丁。

最新更新