xml rest hadoop hbase stargate

xml - Filtro RESET HBase(SingleColumnValueFilter)



rest hadoop (1)

No puedo entender cómo usar filtros en la interfaz REST HBase (HBase 0.90.4-cdh3u3). La documentación simplemente me da una definición de esquema para una "cadena", pero no muestra cómo usarla.

Entonces, puedo hacer esto:

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

y luego recuperar con

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

Pero ahora quiero usar SingleColumnValueFilter y tengo que codificar eso de alguna manera en el XML. ¿Alguien tiene un ejemplo para esto?

Gracias, Mario


Los campos de filtro en el XML del escáner son cadenas formateadas como JSON. Dado que el JSON para el filtro tiene muchas comillas, recomiendo usar un archivo separado para el parámetro -d de curl, para evitar la comilla simple.

curl -v -H "Content-Type:text/xml" -d @args.txt http://hbasegw:8080/table/scanner

Donde el archivo args.txt es:

<Scanner startRow="cm93MDE=" endRow="cm93MDg=" batch="1024"> <filter> { "latestVersion":true, "ifMissing":true, "qualifier":"Y29sMQ==", "family":"ZmFtaWx5", "op":"EQUAL", "type":"SingleColumnValueFilter", "comparator":{"value":"MQ==","type":"BinaryComparator"} } </filter> </Scanner>

¿Cómo descubres cómo debería ser la cadena de filtro JSON? Aquí hay una manera fácil a través del código de Java que escupe el filtro en cadena dado un objeto de filtro estándar de la API de Java de HBase.

SingleColumnValueFilter filter = new SingleColumnValueFilter( Bytes.toBytes("family"), Bytes.toBytes("col1"), CompareFilter.CompareOp.EQUAL, Bytes.toBytes("1") ); System.out.println(ScannerModel.stringifyFilter(filter));

Tenga en cuenta que JSON y XML requieren datos codificados en Base64. He probado el comando curl anterior en una tabla y funcionó bien.

En caso de que se lo pregunte, sí, la API REST para escáneres aún no es tan amigable con los desarrolladores como pueda.