diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/PrefixFilter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/PrefixFilter.java index 8a62b9b31f2..7e356738acc 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/PrefixFilter.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/PrefixFilter.java @@ -40,9 +40,11 @@ import com.google.protobuf.InvalidProtocolBufferException; @InterfaceAudience.Public @InterfaceStability.Stable public class PrefixFilter extends FilterBase { + public static final int MAX_SKIPPED_COMPARE_ROW_NUM = 100; protected byte [] prefix = null; protected boolean passedPrefix = false; protected boolean filterRow = true; + protected int skippedCompareRows = 0; public PrefixFilter(final byte [] prefix) { this.prefix = prefix; @@ -56,7 +58,12 @@ public class PrefixFilter extends FilterBase { if (firstRowCell == null || this.prefix == null) return true; int length = firstRowCell.getRowLength(); - if (length < prefix.length) return true; + if (length < prefix.length && skippedCompareRows < MAX_SKIPPED_COMPARE_ROW_NUM) { + ++skippedCompareRows; + return true; + } + skippedCompareRows = 0; + // if they are equal, return false => pass row // else return true, filter row // if we are passed the prefix, set flag