1
0

[HUDI-742] Fix Java Math Exception (#1466)

This commit is contained in:
Edwin Guo
2020-03-31 00:56:20 -04:00
committed by GitHub
parent ce0a4c64d0
commit 9ecf0ccfb2
2 changed files with 18 additions and 1 deletions

View File

@@ -145,7 +145,7 @@ public class BucketizedBloomCheckPartitioner extends Partitioner {
final Pair<String, String> parts = (Pair<String, String>) key;
final long hashOfKey = NumericUtils.getMessageDigestHash("MD5", parts.getRight());
final List<Integer> candidatePartitions = fileGroupToPartitions.get(parts.getLeft());
final int idx = (int) Math.floorMod(hashOfKey, candidatePartitions.size());
final int idx = (int) Math.floorMod((int) hashOfKey, candidatePartitions.size());
assert idx >= 0;
return candidatePartitions.get(idx);
}

View File

@@ -30,6 +30,7 @@ import java.util.stream.IntStream;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class TestBucketizedBloomCheckPartitioner {
@@ -79,4 +80,20 @@ public class TestBucketizedBloomCheckPartitioner {
BucketizedBloomCheckPartitioner p = new BucketizedBloomCheckPartitioner(10000, comparisons1, 10);
assertEquals("num partitions must equal total buckets", 100, p.numPartitions());
}
@Test
public void testGetPartitions() {
Map<String, Long> comparisons1 = new HashMap<String, Long>() {
{
IntStream.range(0, 100000).forEach(f -> put("f" + f, 100L));
}
};
BucketizedBloomCheckPartitioner p = new BucketizedBloomCheckPartitioner(1000, comparisons1, 10);
IntStream.range(0, 100000).forEach(f -> {
int partition = p.getPartition(Pair.of("f" + f, "value"));
assertTrue("partition is out of range: " + partition, 0 <= partition && partition <= 1000);
});
}
}