T
- extends Geometry - the type of geometries in the left setU
- extends Geometry - the type of geometries in the right setpublic class KnnJoinIndexJudgement<T extends org.locationtech.jts.geom.Geometry,U extends org.locationtech.jts.geom.Geometry> extends Object implements org.apache.spark.api.java.function.FlatMapFunction2<Iterator<T>,Iterator<org.locationtech.jts.index.SpatialIndex>,org.apache.commons.lang3.tuple.Pair<U,T>>, Serializable
Modifier and Type | Field and Description |
---|---|
protected org.apache.spark.util.LongAccumulator |
buildCount |
protected org.apache.spark.util.LongAccumulator |
candidateCount |
protected org.apache.spark.util.LongAccumulator |
resultCount |
protected org.apache.spark.util.LongAccumulator |
streamCount |
Constructor and Description |
---|
KnnJoinIndexJudgement(int k,
DistanceMetric distanceMetric,
boolean includeTies,
org.apache.spark.broadcast.Broadcast<STRtree> broadcastedTreeIndex,
org.apache.spark.util.LongAccumulator buildCount,
org.apache.spark.util.LongAccumulator streamCount,
org.apache.spark.util.LongAccumulator resultCount,
org.apache.spark.util.LongAccumulator candidateCount)
Constructor for the KnnJoinIndexJudgement class.
|
Modifier and Type | Method and Description |
---|---|
Iterator<org.apache.commons.lang3.tuple.Pair<U,T>> |
call(Iterator<T> streamShapes,
Iterator<org.locationtech.jts.index.SpatialIndex> treeIndexes)
This method performs the KNN join operation.
|
protected boolean |
hasNextBase(List<? extends org.locationtech.jts.geom.Geometry> buildShapes,
Iterator<? extends org.locationtech.jts.geom.Geometry> streamShapes)
Iterator model for the nest loop join.
|
protected boolean |
hasNextBase(org.locationtech.jts.index.SpatialIndex spatialIndex,
Iterator<? extends org.locationtech.jts.geom.Geometry> streamShapes,
boolean buildLeft)
Iterator model for the index-based join.
|
protected void |
initPartition()
Looks up the extent of the current partition.
|
protected void |
log(String message,
Object... params) |
protected org.apache.commons.lang3.tuple.Pair<U,T> |
nextBase(List<? extends org.locationtech.jts.geom.Geometry> buildShapes,
Iterator<? extends org.locationtech.jts.geom.Geometry> streamShapes)
Iterator model for the nest loop join.
|
protected org.apache.commons.lang3.tuple.Pair<U,T> |
nextBase(org.locationtech.jts.index.SpatialIndex spatialIndex,
Iterator<? extends org.locationtech.jts.geom.Geometry> streamShapes,
boolean buildLeft)
Iterator model for the index-based join.
|
protected final org.apache.spark.util.LongAccumulator buildCount
protected final org.apache.spark.util.LongAccumulator streamCount
protected final org.apache.spark.util.LongAccumulator resultCount
protected final org.apache.spark.util.LongAccumulator candidateCount
public KnnJoinIndexJudgement(int k, DistanceMetric distanceMetric, boolean includeTies, org.apache.spark.broadcast.Broadcast<STRtree> broadcastedTreeIndex, org.apache.spark.util.LongAccumulator buildCount, org.apache.spark.util.LongAccumulator streamCount, org.apache.spark.util.LongAccumulator resultCount, org.apache.spark.util.LongAccumulator candidateCount)
k
- the number of nearest neighbors to finddistanceMetric
- the distance metric to usebuildCount
- accumulator for the number of geometries processed from the build sidestreamCount
- accumulator for the number of geometries processed from the stream sideresultCount
- accumulator for the number of join resultscandidateCount
- accumulator for the number of candidate matchesbroadcastedTreeIndex
- the broadcasted spatial indexpublic Iterator<org.apache.commons.lang3.tuple.Pair<U,T>> call(Iterator<T> streamShapes, Iterator<org.locationtech.jts.index.SpatialIndex> treeIndexes) throws Exception
call
in interface org.apache.spark.api.java.function.FlatMapFunction2<Iterator<T extends org.locationtech.jts.geom.Geometry>,Iterator<org.locationtech.jts.index.SpatialIndex>,org.apache.commons.lang3.tuple.Pair<U extends org.locationtech.jts.geom.Geometry,T extends org.locationtech.jts.geom.Geometry>>
streamShapes
- iterator over the geometries in the stream sidetreeIndexes
- iterator over the spatial indexesException
- if the spatial index is not of type STRtreeprotected void initPartition()
Must be called before processing a partition. Must be called from the same instance that will be used to process the partition.
protected boolean hasNextBase(org.locationtech.jts.index.SpatialIndex spatialIndex, Iterator<? extends org.locationtech.jts.geom.Geometry> streamShapes, boolean buildLeft)
spatialIndex
- streamShapes
- buildLeft
- protected boolean hasNextBase(List<? extends org.locationtech.jts.geom.Geometry> buildShapes, Iterator<? extends org.locationtech.jts.geom.Geometry> streamShapes)
buildShapes
- streamShapes
- protected org.apache.commons.lang3.tuple.Pair<U,T> nextBase(org.locationtech.jts.index.SpatialIndex spatialIndex, Iterator<? extends org.locationtech.jts.geom.Geometry> streamShapes, boolean buildLeft)
spatialIndex
- streamShapes
- buildLeft
- protected org.apache.commons.lang3.tuple.Pair<U,T> nextBase(List<? extends org.locationtech.jts.geom.Geometry> buildShapes, Iterator<? extends org.locationtech.jts.geom.Geometry> streamShapes)
buildShapes
- streamShapes
- Copyright © 2025 The Apache Software Foundation. All rights reserved.