hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bmdevelopment <bmdevelopm...@gmail.com>
Subject New Filter Functionality Required [was: Re: Problem using RowFilter]
Date Mon, 02 Nov 2009 19:02:45 GMT
Hello,
I am back to where I am going to need the functionality I have described 
below - basically a SCVF that works on all versions. I was wondering if 
I may go ahead and open an issue for this and begin to contribute some 
code. Granted, I will have to do some digging to get my head around the 
filtering at the moment. If that is fine, then I will go ahead and do so 
and post in JIRA once I have something working.
Thanks
J

Bluemetrix Development wrote:
> 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 <jlist@streamy.com> 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 <dploeg@gmail.com> 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 <
>>>> bmdevelopment@gmail.com> 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
>>>>>
>>>>>
>>>
>>


Mime
View raw message