Class ByteStringRangeHelper
- java.lang.Object
-
- org.apache.beam.sdk.io.gcp.bigtable.changestreams.ByteStringRangeHelper
-
@Internal public class ByteStringRangeHelper extends java.lang.ObjectHelper functions to evaluate the completeness of collection of ByteStringRanges.
-
-
Constructor Summary
Constructors Constructor Description ByteStringRangeHelper()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static booleancoverSameKeySpace(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> parentPartitions, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange childPartition)Returns true if parentPartitions form a proper superset of childPartition.static booleandoPartitionsOverlap(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange first, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange second)Returns true if the two ByteStringRange overlaps, otherwise false.static java.lang.StringformatByteStringRange(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)Returns formatted string of a partition for debugging.static com.google.cloud.bigtable.data.v2.models.Range.ByteStringRangegetIntersectingPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p1, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p2)Return the overlapping parts of 2 partitions.static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange>getMissingPartitionsFrom(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions, com.google.protobuf.ByteString start, com.google.protobuf.ByteString end)Return missing partitions within partitions that are within start and end.static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange>getMissingPartitionsFromEntireKeySpace(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)Return missing partitions from the entire keyspace.static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange>getOverlappingPartitions(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)Return a list of overlapping partitions.static booleanisValidPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)Checks if the partition's start key is before its end key.static java.lang.StringpartitionsToString(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)Convert partitions to a string for debugging.
-
-
-
Method Detail
-
coverSameKeySpace
public static boolean coverSameKeySpace(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> parentPartitions, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange childPartition)Returns true if parentPartitions form a proper superset of childPartition.If ordered parentPartitions row ranges form a contiguous range without any overlaps, and start key equals to childPartition's start key, and end key equals to childPartition's end key, then parentPartitions form a proper superset of childPartition.
Returns false if there are overlaps or missing partitions in parentPartitions.
- Parameters:
parentPartitions- list of partitions to determine if it forms an exact contiguous rangechildPartition- the partition to match- Returns:
- true if parentPartitions covers the same key space as childPartition, otherwise false.
-
partitionsToString
public static java.lang.String partitionsToString(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
Convert partitions to a string for debugging.- Parameters:
partitions- to print- Returns:
- string representation of partitions
-
getMissingPartitionsFrom
public static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getMissingPartitionsFrom(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions, com.google.protobuf.ByteString start, com.google.protobuf.ByteString end)Return missing partitions within partitions that are within start and end. Gaps in partitions that are outside of start and end are ignored.- Parameters:
partitions- find missing partitions withinstart- start of the search rangeend- end of the search range- Returns:
- missing partitions within the range
-
getMissingPartitionsFromEntireKeySpace
public static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getMissingPartitionsFromEntireKeySpace(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
Return missing partitions from the entire keyspace.- Parameters:
partitions- find missing partitions within- Returns:
- a list of missing partitions.
-
getOverlappingPartitions
public static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getOverlappingPartitions(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
Return a list of overlapping partitions. The partitions outputted are valid partitions i.e. start < end. This represents 2 ordered partitions overlapping because the 2nd partition starts before the 1st ended. If end == start, it's not considered overlap.- Parameters:
partitions- find overlaps within- Returns:
- a list of overlapping partitions.
-
formatByteStringRange
public static java.lang.String formatByteStringRange(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
Returns formatted string of a partition for debugging.- Parameters:
partition- partition to format.- Returns:
- String representation of partition.
-
doPartitionsOverlap
public static boolean doPartitionsOverlap(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange first, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange second)Returns true if the two ByteStringRange overlaps, otherwise false. End = Start is not considered overlapping because end is open and start is closed.Assume the two ByteStringRange are valid such that the start <= end. There are 2 scenarios that's considered NOT overlapping. Otherwise, they are overlapping.
- The second's start key is same or after first's end key
- The first's start key is same or after second's end key
- Parameters:
first- first ByteStringRangesecond- second ByteStringRange- Returns:
- true if the two ByteStringRange overlaps, otherwise false.
-
isValidPartition
public static boolean isValidPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
Checks if the partition's start key is before its end key.- Parameters:
partition- the partition to verify.- Returns:
- true if partition is valid, otherwise false.
-
getIntersectingPartition
public static com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange getIntersectingPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p1, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p2) throws java.lang.IllegalArgumentExceptionReturn the overlapping parts of 2 partitions. Throw IllegalArgumentException if the 2 partitions don't overlap at all.- Parameters:
p1- first partitionp2- second partition- Returns:
- the intersection of the 2 partitions
- Throws:
java.lang.IllegalArgumentException- if the 2 partitions don't overlap at all
-
-