Hi, Thanks for the response.
Yes, ValueFilter does compare against all versions. Thanks for
pointing this out. I'm getting closer. :)

Basically, I am wanting to do the following:
Get all values (for all versions) of a row where a specific value (for
any version), specified by family:qualifier, matches a string.

The problems I am having now are that
1.) I can specify a string to match with ValueFilter, but now only
that value is returned with the row. I want all values in that row
returned.
2.) I cannot specify which family:qualifier to match against for a
past version. This causes problems if the value I am looking for is,
by chance, in a column other than the one I want to search, therefore
returning a row that I do not really want. SCVF solves this, but does
not work for past versions.

I've started to work around this by filtering on the client side after
the results are returned, but of course it would be nice not to return
rows that will not be used in the final data set.
Also, there are probably ways to work around this by re-structuring my
table, but that could lead to many different tables per query type.

Thanks again.
J

On Thu, Oct 1, 2009 at 2:50 PM, Jonathan Gray <[email protected]> wrote:
> That is the behavior for SCVF.  The other filters generally don't pay
> attention to versions, but SCVF is special because it makes the decision
> once it trips over the sought after column (the first/most recent version
> of it).
>
> What exactly are you trying to do?  Could you use ValueFilter instead?
>
> JG
>
> On Thu, October 1, 2009 10:06 am, Bluemetrix Development wrote:
>> Hi, Thanks very much.
>> I applied the patch and the RowFilter seem to be initially working.
>>
>>
>> But, I have seem to come across another problem now.
>> Filters only compare against the most recent version's values. Is this
>> correct?
>>
>> For example, let's say I have a row with 3 versions:
>> hbase(main):004:0> get 'Data', 'abc', {COLUMNS=>'x:y', VERSIONS=>3}
>> timestamp=124380366942072, value=xxx timestamp=124380364890514, value=yyy
>> timestamp=124380364491516, value=zzz
>>
>> Now, I want to be able to use a SingleColumnValueFilter on 'x:y' to
>> find the value 'zzz'. It seems I can only test against the latest version
>> 'xxx'.
>> Sample code:
>> Filter f = new SingleColumnValueFilter(Bytes.toBytes("x"),
>> Bytes.toBytes("y"), CompareOp.EQUAL, new SubstringComparator("zzz"));
>> This will not find anything.
>>
>>
>> Is this the intended behavior or am I doing something wrong?
>> Thanks again
>> J
>>
>>
>>
>>
>>
>>
>> On Wed, Sep 30, 2009 at 6:00 PM, Daniel Ploeg <[email protected]> wrote:
>>
>>> Looks like your running into the issue described in this jira:
>>>
>>>
>>> https://issues.apache.org/jira/browse/HBASE-1828
>>>
>>>
>>> On Thu, Oct 1, 2009 at 5:52 AM, Bluemetrix Development <
>>> [email protected]> wrote:
>>>
>>>> Hello,
>>>> I am trying to use a RowFilter and continue to get the following
>>>> error:
>>>>
>>>>
>>>> Exception in thread "main"
>>>> org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to
>>>> contact region server 127.0.0.1:54441 for region
>>>> TableData,,1254329413425, row '', but failed after 10 attempts.
>>>> Exceptions:
>>>> java.io.IOException: Call to /127.0.0.1:54441 failed on local
>>>> exception: java.io.EOFException
>>>> java.io.IOException: Call to /127.0.0.1:54441 failed on local
>>>> exception: java.io.EOFException
>>>> java.io.IOException: Call to /127.0.0.1:54441 failed on local
>>>> exception: java.io.EOFException
>>>> ...
>>>>
>>>>
>>>> Here is the code:
>>>>
>>>>
>>>>        HBaseConfiguration conf = new HBaseConfiguration();
>>>>        HTable table = new HTable(conf, tableName);
>>>>        Scan scan = new Scan();
>>>>        scan.setMaxVersions();
>>>>        scan.setTimeRange(timeStart, timeEnd);
>>>>        RowFilter rf = new RowFilter(CompareOp.EQUAL, new
>>>> SubstringComparator("abc"));
>>>>        scan.setFilter(rf);
>>>>        ResultScanner scanner = table.getScanner(scan);
>>>>
>>>>
>>>> I've never came across this before until I started trying to use
>>>> RowFilter. And if I comment out the setFilter function, there is no
>>>> longer a problem. Actually, I get the exact same error for any type of
>>>>  Filter I attempt to use. I'm using 0.20 on a pseudo-dist setup -
>>>> standard config as in the Getting Started docs. Any ideas on this? Am I
>>>> using the Filter correctly?
>>>>
>>>> Thanks
>>>> J
>>>>
>>>>
>>>
>>
>>
>
>

Reply via email to