org.apache.hadoop.hbase.filter
Class WhileMatchRowFilter
java.lang.Object
org.apache.hadoop.hbase.filter.WhileMatchRowFilter
- All Implemented Interfaces:
- RowFilterInterface, org.apache.hadoop.io.Writable
public class WhileMatchRowFilter
- extends Object
- implements RowFilterInterface
WhileMatchRowFilter is a wrapper filter that filters everything after the
first filtered row. Once the nested filter returns true for either of it's
filter(..) methods or filterNotNull(SortedMap), this wrapper's
filterAllRemaining() will return true. All filtering methods will
thereafter defer to the result of filterAllRemaining().
Method Summary |
boolean |
filterAllRemaining()
Returns true once the nested filter has filtered out a row (returned true
on a call to one of it's filtering methods). |
boolean |
filterColumn(byte[] rowKey,
byte[] colKey,
byte[] data)
Filters on row key, column name, and column value. |
boolean |
filterRow(SortedMap<byte[],Cell> columns)
Filter on the fully assembled row. |
boolean |
filterRowKey(byte[] rowKey)
Filters on just a row key. |
RowFilterInterface |
getInternalFilter()
Returns the internal filter being wrapped |
boolean |
processAlways()
Returns whether or not the filter should always be processed in any
filtering call. |
void |
readFields(DataInput in)
|
void |
reset()
Resets the state of the filter. |
void |
rowProcessed(boolean filtered,
byte[] rowKey)
Called to let filter know the final decision (to pass or filter) on a
given row. |
void |
validate(byte[][] columns)
Validates that this filter applies only to a subset of the given columns. |
void |
write(DataOutput out)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
WhileMatchRowFilter
public WhileMatchRowFilter()
- Default constructor, filters nothing. Required though for RPC
deserialization.
WhileMatchRowFilter
public WhileMatchRowFilter(RowFilterInterface filter)
- Constructor
- Parameters:
filter
-
getInternalFilter
public RowFilterInterface getInternalFilter()
- Returns the internal filter being wrapped
- Returns:
- the internal filter
reset
public void reset()
- Description copied from interface:
RowFilterInterface
- Resets the state of the filter. Used prior to the start of a Region scan.
- Specified by:
reset
in interface RowFilterInterface
processAlways
public boolean processAlways()
- Description copied from interface:
RowFilterInterface
- Returns whether or not the filter should always be processed in any
filtering call. This precaution is necessary for filters that maintain
state and need to be updated according to their response to filtering
calls (see WhileMatchRowFilter for an example). At times, filters nested
in RowFilterSets may or may not be called because the RowFilterSet
determines a result as fast as possible. Returning true for
processAlways() ensures that the filter will always be called.
- Specified by:
processAlways
in interface RowFilterInterface
- Returns:
- whether or not to always process the filter
filterAllRemaining
public boolean filterAllRemaining()
- Returns true once the nested filter has filtered out a row (returned true
on a call to one of it's filtering methods). Until then it returns false.
- Specified by:
filterAllRemaining
in interface RowFilterInterface
- Returns:
- true/false whether the nested filter has returned true on a filter
call.
filterRowKey
public boolean filterRowKey(byte[] rowKey)
- Description copied from interface:
RowFilterInterface
- Filters on just a row key. This is the first chance to stop a row.
- Specified by:
filterRowKey
in interface RowFilterInterface
- Returns:
- true if given row key is filtered and row should not be processed.
filterColumn
public boolean filterColumn(byte[] rowKey,
byte[] colKey,
byte[] data)
- Description copied from interface:
RowFilterInterface
- Filters on row key, column name, and column value. This will take individual columns out of a row,
but the rest of the row will still get through.
- Specified by:
filterColumn
in interface RowFilterInterface
- Parameters:
rowKey
- row key to filter on.colKey
- column name to filter ondata
- column value to filter on
- Returns:
- true if row filtered and should not be processed.
filterRow
public boolean filterRow(SortedMap<byte[],Cell> columns)
- Description copied from interface:
RowFilterInterface
- Filter on the fully assembled row. This is the last chance to stop a row.
- Specified by:
filterRow
in interface RowFilterInterface
- Returns:
- true if row filtered and should not be processed.
rowProcessed
public void rowProcessed(boolean filtered,
byte[] rowKey)
- Description copied from interface:
RowFilterInterface
- Called to let filter know the final decision (to pass or filter) on a
given row. With out HScanner calling this, the filter does not know if a
row passed filtering even if it passed the row itself because other
filters may have failed the row. E.g. when this filter is a member of a
RowFilterSet with an OR operator.
- Specified by:
rowProcessed
in interface RowFilterInterface
- See Also:
RowFilterSet
validate
public void validate(byte[][] columns)
- Description copied from interface:
RowFilterInterface
- Validates that this filter applies only to a subset of the given columns.
This check is done prior to opening of scanner due to the limitation that
filtering of columns is dependent on the retrieval of those columns within
the HRegion. Criteria on columns that are not part of a scanner's column
list will be ignored. In the case of null value filters, all rows will pass
the filter. This behavior should be 'undefined' for the user and therefore
not permitted.
- Specified by:
validate
in interface RowFilterInterface
readFields
public void readFields(DataInput in)
throws IOException
- Specified by:
readFields
in interface org.apache.hadoop.io.Writable
- Throws:
IOException
write
public void write(DataOutput out)
throws IOException
- Specified by:
write
in interface org.apache.hadoop.io.Writable
- Throws:
IOException
Copyright © 2008 The Apache Software Foundation