You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by Daniel Ploeg <dp...@gmail.com> on 2009/10/01 00:00:04 UTC

Re: Problem using RowFilter

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
>

Re: New Filter Functionality Required [was: Re: Problem using RowFilter]

Posted by bmdevelopment <bm...@gmail.com>.
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 <bm...@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 <jl...@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 <dp...@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
>>>>>>>
>>>>>>>
>>>>>>>
> 


Re: New Filter Functionality Required [was: Re: Problem using RowFilter]

Posted by stack <st...@duboce.net>.
On Mon, Nov 2, 2009 at 11:02 AM, bmdevelopment <bm...@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 <jl...@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 <dp...@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
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>
>

New Filter Functionality Required [was: Re: Problem using RowFilter]

Posted by bmdevelopment <bm...@gmail.com>.
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 <jl...@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 <dp...@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
>>>>>
>>>>>
>>>
>>


Re: Problem using RowFilter

Posted by Bluemetrix Development <bm...@gmail.com>.
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 <jl...@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 <dp...@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
>>>>
>>>>
>>>
>>
>>
>
>

Re: Problem using RowFilter

Posted by Jonathan Gray <jl...@streamy.com>.
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 <dp...@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
>>>
>>>
>>
>
>


Re: Problem using RowFilter

Posted by Bluemetrix Development <bm...@gmail.com>.
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 <dp...@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
>>
>