diff --git a/analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/spatial/TieredSpatialJoin.java b/analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/spatial/TieredSpatialJoin.java index 24b5c9e0ea1..50ef501b44b 100644 --- a/analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/spatial/TieredSpatialJoin.java +++ b/analytics/spark/src/main/java/org/locationtech/geowave/analytic/spark/spatial/TieredSpatialJoin.java @@ -379,30 +379,30 @@ public void join( private Map> createReprojectMap( final Byte[] buildSide, final Byte[] testSide, - final HashSet sharedTiers) { - final Map> resultMap = Maps.newHashMap(); - final int testLastIndex = testSide.length; - for (final Byte tierLeft : buildSide) { - final int firstGreater = Arrays.binarySearch(testSide, tierLeft); - - if (firstGreater >= 0) { - // Found in array - sharedTiers.add(tierLeft); - } - - final int insertionPoint = Math.abs(firstGreater); - if (insertionPoint >= testLastIndex) { - // Not present in array, and none greater than this value - continue; + final HashSet sharedTiers) + { + final Map> resultMap = Maps.newHashMap(); + final int testLastIndex = testSide.length; + for (final Byte tierLeft : buildSide) + { + final int firstGreater = Arrays.binarySearch(testSide, tierLeft); + //add same tier id + if (firstGreater >= 0) { + // Found in array + sharedTiers.add(tierLeft); + } + //add highter tier id + HashSet higherTiers = Sets.newHashSet(); + for(Byte testID :testSide) + { + if(testID>tierLeft) + { + higherTiers.add(testID); + } + } + resultMap.put(tierLeft, higherTiers); } - - // There is at least one value greater than the current copy it and - // add to map - final HashSet higherTiers = - Sets.newHashSet(Arrays.copyOfRange(testSide, insertionPoint, testLastIndex)); - resultMap.put(tierLeft, higherTiers); - } - return resultMap; + return resultMap; } private void setBufferAmount(final double bufferAmount) {