2012-02-02 1 views
7

Stavo usando BloomFilter in guava v.11.0.1 e sembra che sto ricevendo un'eccezione quando il mio inserimento è grande. Ho provato a 10 milioni con 0,001 fpp, e non è riuscito.Guava Bloom Filter non supporta gli inserimenti di grandi dimensioni?

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) 

Penso che almeno dovrebbe supportare che molti inserimenti con un fpp così alto, non dovrebbe?

risposta

9

Mi dispiace per questo, io sono il colpevole :)

Speriamo di essere in grado di spingere la prossima versione più presto. Non è il momento di dirlo, ma c'è un lato positivo di questo incidente: significa che possiamo sicuramente uccidere l'attuale forma seriale di BF e il relativo codice di supporto (che è stato un incidente stesso), che sto cercando di risolvere for a month now - tra l'altro la soluzione a questo risolve anche questo problema.

Edit: ulteriori informazioni here (e in Louis' questione depositato)

5

Questo dovrebbe probabilmente essere archiviato come un problema su Guava, non su StackOverflow. (Lo confermano, a proposito, e ho capito soprattutto cosa sta succedendo.)

AGGIORNAMENTO: Ho archiviato uno issue e ho iniziato una patch.

+0

oh scusate, grazie per il deposito di esso! –