You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Andrew Kyle Purtell (Jira)" <ji...@apache.org> on 2022/06/14 17:54:00 UTC
[jira] [Resolved] (HBASE-6750) Provide a variant of ValueFilter that only accepts the latest value (like SingleColumnValueFilter.setLatestVersionOnly)
[ https://issues.apache.org/jira/browse/HBASE-6750?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Kyle Purtell resolved HBASE-6750.
----------------------------------------
Resolution: Won't Fix
> Provide a variant of ValueFilter that only accepts the latest value (like SingleColumnValueFilter.setLatestVersionOnly)
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-6750
> URL: https://issues.apache.org/jira/browse/HBASE-6750
> Project: HBase
> Issue Type: New Feature
> Components: Filters
> Affects Versions: 2.0.0
> Environment: All
> Reporter: David Witten
> Priority: Minor
> Labels: beginner
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> Currently ValueFilter will return an old value that matches if the latest value does not. I recommend providing an option on ValueFilter, like setLastestVersionOnly, or creating a subclass of ValueFilter that always has this behavior.
> Below is a custom filter that seems to work, though you may want to copy and frob ValueFilter to just return NEXT_COL where it returns SKIP:
> package dummy.hbasesvr;
> import org.apache.hadoop.hbase.KeyValue;
> import org.apache.hadoop.hbase.filter.ValueFilter;
> import org.apache.hadoop.hbase.filter.WritableByteArrayComparable;
> /**
> * The same as {@link ValueFilter} except it will only look at the latest value for a given column.
> */
> public class LatestValueFilter extends ValueFilter
> {
> /**
> * Writable constructor, do not use.
> */
> public LatestValueFilter()
> {
> }
> /**
> * Constructor.
> * @param valueCompareOp the compare op for value matching
> * @param valueComparator the comparator for value matching
> */
> public LatestValueFilter(CompareOp valueCompareOp, WritableByteArrayComparable valueComparator)
> {
> super(valueCompareOp, valueComparator);
> }
> @Override
> public ReturnCode filterKeyValue( KeyValue v)
> {
> // This assumes that given several KeyValues with the same row+fam+qual+val the one with
> // the latest value will be given first.
> ReturnCode superReturnCode = super.filterKeyValue(v);
> if ( superReturnCode == ReturnCode.SKIP)
> {
> return ReturnCode.NEXT_COL;
> }
> return superReturnCode;
> }
> }
> Note I am a novice HBase user.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)