/** * Adds a new row to <i>this</i> dynamic Bloom filter. */ private void addRow() { BloomFilter[] tmp = new BloomFilter[matrix.length + 1]; for (int i = 0; i < matrix.length; i++) { tmp[i] = matrix[i]; } tmp[tmp.length-1] = new BloomFilter(vectorSize, nbHash, hashType); matrix = tmp; }
/** * Constructor. * <p> * Builds an empty Dynamic Bloom filter. * @param vectorSize The number of bits in the vector. * @param nbHash The number of hash function to consider. * @param hashType type of the hashing function (see * {@link org.apache.hadoop.util.hash.Hash}). * @param nr The threshold for the maximum number of keys to record in a * dynamic Bloom filter row. */ public DynamicBloomFilter(int vectorSize, int nbHash, int hashType, int nr) { super(vectorSize, nbHash, hashType); this.nr = nr; this.currentNbRecord = 0; matrix = new BloomFilter[1]; matrix[0] = new BloomFilter(this.vectorSize, this.nbHash, this.hashType); }
@Override public void readFields(DataInput in) throws IOException { super.readFields(in); nr = in.readInt(); currentNbRecord = in.readInt(); int len = in.readInt(); matrix = new BloomFilter[len]; for (int i = 0; i < matrix.length; i++) { matrix[i] = new BloomFilter(); matrix[i].readFields(in); } }
static Filter NewVesselBloom() { return new BloomFilter(); }
public static Filter NewBloomInstance(double c, int n, int k) { LOG.info("Creating new Bloom filter C = " + c + " N = " + n + " K = " + k); BloomFilter dbf = new BloomFilter((int) Math.ceil(c * n), k, DEFAULT_HASH_TYPE); return dbf; }
/** * Adds a new row to <i>this</i> dynamic Bloom filter. */ private void addRow() { BloomFilter[] tmp = new BloomFilter[matrix.length + 1]; for (int i = 0; i < matrix.length; i++) { tmp[i] = matrix[i]; } tmp[tmp.length-1] = new BloomFilter(vectorSize, nbHash, hashType); matrix = tmp; }
/** * Adds a new row to <i>this</i> dynamic Bloom filter. */ private void addRow() { BloomFilter[] tmp = new BloomFilter[matrix.length + 1]; for (int i = 0; i < matrix.length; i++) { tmp[i] = matrix[i]; } tmp[tmp.length-1] = new BloomFilter(vectorSize, nbHash, hashType); matrix = tmp; }
/** * Adds a new row to <i>this</i> dynamic Bloom filter. */ private void addRow() { BloomFilter[] tmp = new BloomFilter[matrix.length + 1]; for (int i = 0; i < matrix.length; i++) { tmp[i] = matrix[i]; } tmp[tmp.length-1] = new BloomFilter(vectorSize, nbHash, hashType); matrix = tmp; }
/** * Adds a new row to <i>this</i> dynamic Bloom filter. */ private void addRow() { BloomFilter[] tmp = new BloomFilter[matrix.length + 1]; for (int i = 0; i < matrix.length; i++) { tmp[i] = matrix[i]; } tmp[tmp.length-1] = new BloomFilter(vectorSize, nbHash, hashType); matrix = tmp; }
/** * Returns a {@link org.apache.hadoop.util.bloom.BloomFilter} of the given * size. * * @param size the size of the bloom filter to create * @return A new BloomFilter of the desired size */ public static BloomFilter getBloomFilter(final int size) { return new BloomFilter(size, 13, Hash.MURMUR_HASH); } }
/** * Create a new Bloom filter with the given configurations. */ public BloomFilter(int numEntries, double errorRate, int hashType) { // Bit size int bitSize = (int) Math.ceil(numEntries * (-Math.log(errorRate) / LOG2_SQUARED)); // Number of the hash functions int numHashs = (int) Math.ceil(Math.log(2) * bitSize / numEntries); // The filter this.filter = new org.apache.hadoop.util.bloom.BloomFilter(bitSize, numHashs, hashType); }
@Override public void readFields(DataInput in) throws IOException { super.readFields(in); nr = in.readInt(); currentNbRecord = in.readInt(); int len = in.readInt(); matrix = new BloomFilter[len]; for (int i = 0; i < matrix.length; i++) { matrix[i] = new BloomFilter(); matrix[i].readFields(in); } }
@Override public void readFields(DataInput in) throws IOException { super.readFields(in); nr = in.readInt(); currentNbRecord = in.readInt(); int len = in.readInt(); matrix = new BloomFilter[len]; for (int i = 0; i < matrix.length; i++) { matrix[i] = new BloomFilter(); matrix[i].readFields(in); } }
/** * For testing only, do not use directly. */ public void setFilter(DataByteArray dba) throws IOException { DataInputStream dis = new DataInputStream(new ByteArrayInputStream(dba.get())); filter = new BloomFilter(); filter.readFields(dis); }
@Override public void readFields(DataInput in) throws IOException { super.readFields(in); nr = in.readInt(); currentNbRecord = in.readInt(); int len = in.readInt(); matrix = new BloomFilter[len]; for (int i = 0; i < matrix.length; i++) { matrix[i] = new BloomFilter(); matrix[i].readFields(in); } }
@Override public void readFields(DataInput in) throws IOException { super.readFields(in); nr = in.readInt(); currentNbRecord = in.readInt(); int len = in.readInt(); matrix = new BloomFilter[len]; for (int i = 0; i < matrix.length; i++) { matrix[i] = new BloomFilter(); matrix[i].readFields(in); } }
@Override public void initialize() { super.initialize(); bloomFilter = new BloomFilter(vectorSize, nbHash, Hash.MURMUR_HASH); ptype.initialize(getConfiguration()); keyToBytesFn = getKeyToBytesMapFn(ptype, getConfiguration()); }
@Test public void testFiltersWithLargeVectorSize() { int hashId = Hash.MURMUR_HASH; Filter filter = new BloomFilter(Integer.MAX_VALUE, hashFunctionNumber, hashId); BloomFilterCommonTester.of(hashId, numInsertions) .withFilterInstance(filter) .withTestCases(ImmutableSet.of( BloomFilterTestStrategy.WRITE_READ_STRATEGY )).test(); }
@Test public void testNot() { BloomFilter bf = new BloomFilter(8, 1, Hash.JENKINS_HASH); bf.bits = BitSet.valueOf(new byte[] { (byte) 0x95 }); BitSet origBitSet = (BitSet) bf.bits.clone(); bf.not(); assertFalse("BloomFilter#not should have inverted all bits", bf.bits.intersects(origBitSet)); } }
@Test public void testNot() { BloomFilter bf = new BloomFilter(8, 1, Hash.JENKINS_HASH); bf.bits = BitSet.valueOf(new byte[] { (byte) 0x95 }); BitSet origBitSet = (BitSet) bf.bits.clone(); bf.not(); assertFalse("BloomFilter#not should have inverted all bits", bf.bits.intersects(origBitSet)); } }