tablas - HBase(fácil): Cómo realizar un escaneo de prefijo de rango en el shell hbase
hbase tutorial español (4)
Así que resulta muy fácil. Los rangos de exploración no son inclusivos, la lógica es start <= key <end. Así que la respuesta es
scan ''mytable'', {STARTROW => ''abc'', ENDROW => ''abd''}
Estoy diseñando una aplicación para ejecutarse en hbase y quiero explorar de forma interactiva los contenidos de mi clúster. Estoy en el shell hbase y quiero realizar un escaneo de todas las claves comenzando con los caracteres "abc". Dichas claves pueden incluir "abc4", "abc92", "abc20014", etc. Intenté una exploración.
hbase(main):003:0> scan ''mytable'', {STARTROW => ''abc'', ENDROW => ''abc''}
Pero esto no parece devolver nada ya que técnicamente no hay ninguna clave de fila "abc", solo las claves de fila que comienzan con "abc"
Lo que quiero es algo como
hbase(main):003:0> scan ''mytable'', {STARTSROWPREFIX => ''abc'', ENDROWPREFIX => ''abc''}
Escuché que HBase puede hacer esto rápidamente y es uno de sus principales puntos de venta. ¿Cómo hago esto en el shell hbase?
Creo que lo que necesitas es un filtro.
verifique la respuesta para la siguiente pregunta Escanear con filtro usando el shell HBase
más filtros están listados en http://hbase.apache.org/book/client.filter.html
En las versiones recientes de HBase, ahora puede hacerlo en el shell hbase:
scan ''mytable'', {ROWPREFIXFILTER => ''abc''}
Esto efectivamente hace esto (y también funciona para situaciones binarias)
scan ''mytable'', {STARTROW => ''abc'', ENDROW => ''abd''}
Este método es MUCHO más eficiente que el enfoque de "PrefixFilter" porque este último coloca todos los registros a través del código de comparación que está presente en esta clase de PrefixFilter.
La solución aceptada no funcionará en todos los casos (claves binarias). Además, el uso de un PrefixFilter puede ser lento porque realiza una exploración de la tabla hasta que alcanza el prefijo. Una solución más eficaz es utilizar un STARTROW y un FILTRO como:
scan ''my_table'', {STARTROW => ''abc'', FILTER => "PrefixFilter(''abc'')"}