hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bmdevelopment <bmdevelopm...@gmail.com>
Subject Re: New Filter Functionality Required [was: Re: Problem using RowFilter]
Date Thu, 12 Nov 2009 17:24:25 GMT
Hello,
Created https://issues.apache.org/jira/browse/HBASE-1975
and submitted patch.
PLMK if you have any questions.
I assume we can continue discussion within the issue.
Thanks
Jeremiah

stack wrote:
> On Mon, Nov 2, 2009 at 11:02 AM, bmdevelopment <bmdevelopment@gmail.com>wrote:
> 
>> 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.
>>
> 
> 
> Please do.  Let us know if we can help out.  Make sure you get latest code.
> Some fixes have gone in for filters recently.
> 
> Yours,
> St.Ack
> 
> 
> 
>> 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