How to send filters parameters in JSON request to HBase REST API? How to send filters parameters in JSON request to HBase REST API? hadoop hadoop

How to send filters parameters in JSON request to HBase REST API?


I got the answer by other's hint:

<?php$headers = array(    'Accept: application/json',    'Content-Type: application/json',);if (!file_exists(__DIR__ . '/tmp')) {    mkdir(__DIR__ . '/tmp', 0777);}$scannerFile = __DIR__ . '/tmp/scanner';if (!file_exists($scannerFile)) {    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, "http://hbase_uri:20550/news/scanner");    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);    curl_setopt($ch, CURLOPT_USERPWD, ":");    curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array(        'batch' => 10,        'filter' => json_encode(array(            'type' => 'PrefixFilter',            'value' => 'u123',        )),    )));    curl_setopt($ch, CURLOPT_HEADER, 1);    curl_setopt($ch, CURLOPT_VERBOSE, 1);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $page = curl_exec($ch);    file_put_contents($scannerFile, $page);    curl_close($ch);} else {    $s = file_get_contents($scannerFile);    $parts = explode('Location: http://hbase_uri:20550/news/scanner/', $s);    $parts = explode("\n", $parts[1]);    $parts[0] = trim($parts[0]);    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, "http://hbase_uri:20550/news/scanner/" . $parts[0]);    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);    curl_setopt($ch, CURLOPT_USERPWD, ":");    curl_setopt($ch, CURLOPT_HEADER, 1);    curl_setopt($ch, CURLOPT_VERBOSE, 1);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $page = curl_exec($ch);    file_put_contents(__DIR__ . '/tmp/result', $page);    curl_close($ch);    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, "http://hbase_uri:20550/news/scanner/" . $parts[0]);    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);    curl_setopt($ch, CURLOPT_USERPWD, ":");    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');    curl_setopt($ch, CURLOPT_HEADER, 1);    curl_setopt($ch, CURLOPT_VERBOSE, 1);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    $page = curl_exec($ch);    file_put_contents(__DIR__ . '/tmp/result_delete', $page);    curl_close($ch);}


For the future visitors.

Using @kiang answer I have successfully made a CURL POST creating an scanner:

curl \  --verbose \  --request POST \  --header 'Accept: application/json' \  --header 'Content-Type: application/json' \  --data '{"batch":10,"filter":"{\"type\":\"PrefixFilter\",\"value\":\"u123\"}"}' \  'https://hbase:20550/namespace:table/scanner/'

This returned

Location -> Buffer(https://hbase:20550/namespace:table/scanner/151302168977413777789)...AhcWSResponse(StandaloneAhcWSResponse(201, Created))

What might be useful: