Hi Andrew,

thanks, I suspected something like this.

I'm using the rest api from python, so I made a litte
helper to construct a few example JSON representations,
to get me on the right track.

Now I patchwork the string together in python and it produces
the same JSON representation as stringifyFilter.
So far so good.

However... it doesn't work... and it's weird,
because it ignores the filter, I always get the full content of the table back.

Could you please provide a simple toy problem that works,
because I suspect that I'm missing some critical thing here.

I'd be happy to help then to mash this into proper documentation.

Thanks,
Mario



On 12-2-16 20:31 , Andrew Purtell wrote:
Hi,

One option is to build a Scan object and attach the filter construction you 
would like using the Java API:

    Scan scan = new Scan();
    Filter filter = new ... ;

    scan.setFilter(filter);


and then use REST's model API to construct and submit the request:

    ScannerModel model = ScannerModel.fromScan(scan);
    // submit the scanner model using methods in 
org.apache.hadoop.hbase.rest.client

But for non Java clients you can stringify the filter:

    String filterAsJSON = ScannerModel.stringifyFilter(filter);

Building a Filter object hierarchy and dumping the JSON representation of it 
can be done interactively using the HBase shell, which is JRuby.

This will give you back a representation of the scanner that you can plug in.

     curl -v -H 'Content-Type: text/xml' \
       -d '<Scanner startRow="ddo" stopRow="ddp" batch="1024"
          filter="FILTER JSON REPRESENTATION GOES HERE"/>'

Of course documenting the JSON representations of filters would be quite 
helpful I realize, but filters have been evolving and I didn't want to produce 
documentation that would be quickly out of date. Patches for such documentation 
and maintenance thereof would always be welcome!


Best regards,


     - Andy

Problems worthy of attack prove their worth by hitting back. - Piet Hein (via 
Tom White)



----- Original Message -----
From: Mario Lassnig<[email protected]>
To: [email protected]
Cc:
Sent: Thursday, February 16, 2012 2:48 AM
Subject: HBase REST SingleColumnValueFilter

Hello,

I cannot figure out how to use filters in the HBase REST interface (HBase
0.90.4-cdh3u3). The documentation just gives me a schema definition for a
"filter string", but doesn't show how to use it.

So, I'm able to do this:

curl -v -H 'Content-Type: text/xml' -d '<Scanner
startRow="ddo" stopRow="ddp"
batch="1024"/>' 'http://hbasegw:8080/table/scanner'

and then retrieve with

curl -s -H "Content-Type: text/xml"
http://hbasegw:8080/table/scanner/13293426893883128482b

But now I want to use a few SingleColumnValueFilters that all must succeed
(e.g., like the java FilterList(FilterList.Operator.MUST_PASS_ALL..)

and have to encode that somehow in the XML. Does anyone have an example for
this?

Thanks, Mario


--
Mario Lassnig
CERN PH-ADP-DDM 1-R-022
CH-1211 Geneve 23
[email protected]
+41 22 76 71268

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to