@Override public long getEstimatedMemorySize() { // adding 16KB constant memory for stringCommon as the rabit hole is deep to implement // MemoryEstimate interface, also it is constant overhead long size = (16 * 1024L); return super.getEstimatedMemorySize() + size; } }
public void verify(VectorMapJoinFastBytesHashMultiSet map) { int mapSize = map.size(); if (mapSize != count) { TestCase.fail("map.size() does not match expected count"); } for (int index = 0; index < count; index++) { FastBytesHashMultiSetElement element = array[index]; byte[] key = element.getKey(); int multiSetCount = element.getMultiSetCount(); VectorMapJoinHashMultiSetResult hashMultiSetResult = map.createHashMultiSetResult(); JoinUtil.JoinResult joinResult = map.contains(key, 0, key.length, hashMultiSetResult); if (joinResult != JoinUtil.JoinResult.MATCH) { assertTrue(false); } assertEquals(hashMultiSetResult.count(), multiSetCount); } } }
@Override public JoinUtil.JoinResult contains(byte[] keyBytes, int keyStart, int keyLength, VectorMapJoinHashMultiSetResult hashMultiSetResult) { VectorMapJoinFastHashMultiSet.HashMultiSetResult optimizedHashMultiSetResult = (VectorMapJoinFastHashMultiSet.HashMultiSetResult) hashMultiSetResult; optimizedHashMultiSetResult.forget(); long hashCode = HashCodeUtil.murmurHash(keyBytes, keyStart, keyLength); long count = findReadSlot(keyBytes, keyStart, keyLength, hashCode, hashMultiSetResult.getReadPos()); JoinUtil.JoinResult joinResult; if (count == -1) { joinResult = JoinUtil.JoinResult.NOMATCH; } else { optimizedHashMultiSetResult.set(count); joinResult = JoinUtil.JoinResult.MATCH; } optimizedHashMultiSetResult.setJoinResult(joinResult); return joinResult; }
@Override public JoinUtil.JoinResult contains(byte[] keyBytes, int keyStart, int keyLength, VectorMapJoinHashMultiSetResult hashMultiSetResult) { VectorMapJoinFastBytesHashMultiSetStore.HashMultiSetResult fastHashMultiSetResult = (VectorMapJoinFastBytesHashMultiSetStore.HashMultiSetResult) hashMultiSetResult; fastHashMultiSetResult.forget(); long hashCode = HashCodeUtil.murmurHash(keyBytes, keyStart, keyLength); doHashMultiSetContains( keyBytes, keyStart, keyLength, hashCode, fastHashMultiSetResult); return fastHashMultiSetResult.joinResult(); }
public void add(byte[] keyBytes, int keyStart, int keyLength, BytesWritable currentValue) { expandAndRehash();
@Override public JoinUtil.JoinResult contains(byte[] keyBytes, int keyStart, int keyLength, VectorMapJoinHashMultiSetResult hashMultiSetResult) { VectorMapJoinFastHashMultiSet.HashMultiSetResult optimizedHashMultiSetResult = (VectorMapJoinFastHashMultiSet.HashMultiSetResult) hashMultiSetResult; optimizedHashMultiSetResult.forget(); long hashCode = VectorMapJoinFastBytesHashUtil.hashKey(keyBytes, keyStart, keyLength); long count = findReadSlot(keyBytes, keyStart, keyLength, hashCode); JoinUtil.JoinResult joinResult; if (count == -1) { joinResult = JoinUtil.JoinResult.NOMATCH; } else { optimizedHashMultiSetResult.set(count); joinResult = JoinUtil.JoinResult.MATCH; } optimizedHashMultiSetResult.setJoinResult(joinResult); return joinResult; }
@Override public long getEstimatedMemorySize() { return super.getEstimatedMemorySize(); } }