[ 
https://issues.apache.org/jira/browse/HBASE-7115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aditya Kishore updated HBASE-7115:
----------------------------------

    Description: 
HBASE-5428 added this capability to thrift interface but the configuration 
parameter name is "thrift" specific.

This patch introduces a more generic parameter "hbase.user.filters" using which 
the user defined custom filters can be specified in the configuration and 
loaded in any client that needs to use the filter language parser.

The patch then uses this new parameter to register any user specified filters 
while invoking the HBase shell.

Example usage: Let's say I have written a couple of custom filters with class 
names *{{org.apache.hadoop.hbase.filter.custom.SuperDuperFilter}}* and 
*{{org.apache.hadoop.hbase.filter.custom.SilverBulletFilter}}* and I want to 
use them from HBase shell using the filter language.

To do that, I would add the following configuration to {{hbase-site.xml}}

{panel}{{<property>}}
{{  <name>hbase.user.filters</name>}}
{{  <value>}}*{{SuperDuperFilter}}*{{:org.apache.hadoop.hbase.filter.custom.SuperDuperFilter,}}*{{SilverBulletFilter}}*{{:org.apache.hadoop.hbase.filter.custom.SilverBulletFilter</value>}}
{{</property>}}{panel}

Once this is configured, I can launch HBase shell and use these filters in my 
{{get}} or {{scan}} just the way I would use a built-in filter.

{code}
hbase(main):001:0> scan 't', {FILTER => "SuperDuperFilter(true) AND 
SilverBulletFilter(42)"}
ROW                                                          COLUMN+CELL
 status                                                      column=cf:a, 
timestamp=304385520000, value=world_peace
1 row(s) in 0.0000 seconds
{code}

To use this feature in any client, the client needs to make the following 
function call as part of its initialization.
{code}
ParseFilter.registerUserFilters(configuration);
{code}

  was:
HBASE-5428 added this capability to thrift interface but the configuration 
parameter name is "thrift" specific.

This patch introduces a more generic parameter "hbase.user.filters" using which 
the user defined custom filters can be specified in the configuration and 
loaded in any client that needs to use the filter language parser.

The patch then uses this new parameter to register any user specified filters 
while invoking the HBase shell.

Example usage: Let's say I have written a couple of custom filters with class 
names *{{org.apache.hadoop.hbase.filter.custom.SuperDuperFilter}}* and 
*{{org.apache.hadoop.hbase.filter.custom.SilverBulletFilter}}* and I want to 
use them from HBase shell using the filter language.

To do that, I would add the following configuration to {{hbase-site.xml}}

{panel}{{<property>}}
{{  <name>hbase.user.filters</name>}}
{{  <value>}}*{{SuperDuperFilter}}*{{:org.apache.hadoop.hbase.filter.custom.SuperDuperFilter,}}*{{SilverBulletFilter}}*{{:org.apache.hadoop.hbase.filter.custom.SilverBulletFilter</value>}}
{{</property>}}{panel}

Once this is configured, I can launch HBase shell and use these filters in my 
{{get}} or {{scan}} just the way I would use a built-in filter.

{code}
hbase(main):001:0> scan 't', {FILTER => "SuperDuperFilter(true) AND 
SilverBulletFilter(42)"}
ROW                                                          COLUMN+CELL
 status                                                      column=cf:a, 
timestamp=304385520000, value=world_peace
1 row(s) in 0.0000 seconds
{code}

    
> [shell] Provide a way to register custom filters with the Filter Language 
> Parser
> --------------------------------------------------------------------------------
>
>                 Key: HBASE-7115
>                 URL: https://issues.apache.org/jira/browse/HBASE-7115
>             Project: HBase
>          Issue Type: Improvement
>          Components: Filters, shell
>    Affects Versions: 0.96.0
>            Reporter: Aditya Kishore
>            Assignee: Aditya Kishore
>             Fix For: 0.96.0
>
>         Attachments: HBASE-7115_trunk.patch
>
>
> HBASE-5428 added this capability to thrift interface but the configuration 
> parameter name is "thrift" specific.
> This patch introduces a more generic parameter "hbase.user.filters" using 
> which the user defined custom filters can be specified in the configuration 
> and loaded in any client that needs to use the filter language parser.
> The patch then uses this new parameter to register any user specified filters 
> while invoking the HBase shell.
> Example usage: Let's say I have written a couple of custom filters with class 
> names *{{org.apache.hadoop.hbase.filter.custom.SuperDuperFilter}}* and 
> *{{org.apache.hadoop.hbase.filter.custom.SilverBulletFilter}}* and I want to 
> use them from HBase shell using the filter language.
> To do that, I would add the following configuration to {{hbase-site.xml}}
> {panel}{{<property>}}
> {{  <name>hbase.user.filters</name>}}
> {{  <value>}}*{{SuperDuperFilter}}*{{:org.apache.hadoop.hbase.filter.custom.SuperDuperFilter,}}*{{SilverBulletFilter}}*{{:org.apache.hadoop.hbase.filter.custom.SilverBulletFilter</value>}}
> {{</property>}}{panel}
> Once this is configured, I can launch HBase shell and use these filters in my 
> {{get}} or {{scan}} just the way I would use a built-in filter.
> {code}
> hbase(main):001:0> scan 't', {FILTER => "SuperDuperFilter(true) AND 
> SilverBulletFilter(42)"}
> ROW                                                          COLUMN+CELL
>  status                                                      column=cf:a, 
> timestamp=304385520000, value=world_peace
> 1 row(s) in 0.0000 seconds
> {code}
> To use this feature in any client, the client needs to make the following 
> function call as part of its initialization.
> {code}
> ParseFilter.registerUserFilters(configuration);
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to