Quiero escanear filas en una HTable de hbase shell donde una familia de columna (es decir, Tweet) tiene un valor determinado (es decir, user_id).

Ahora quiero encontrar todas las filas donde tweet:user_id tiene valor test1 como esta columna tiene un valor 'test1'

column=tweet:user_id, timestamp=1339581201187, value=test1

A pesar de que me puede escanear la tabla para un determinado uso,

scan 'tweetsTable',{COLUMNS => 'tweet:user_id'}

pero no encontré ninguna manera de escanear una fila de un valor.

Es posible hacerlo a través de HBase Shell?

He comprobado esta pregunta así.

InformationsquelleAutor Nishu Tayal | 2012-06-13

6 Comentarios

  1. 43

    Es posible sin la Colmena:

    scan 'filemetadata', 
         { COLUMNS => 'colFam:colQualifier', 
           LIMIT => 10, 
           FILTER => "ValueFilter( =, 'binaryprefix:<someValue.e.g. test1 AsDefinedInQuestion>' )" 
         }
    

    Nota: con el fin de encontrar todas las filas que contienen test1 como valor especificado en la pregunta, el uso de binaryprefix:prueba1 en el filtro (ver esta respuesta para más ejemplos)

    • ¿puede por favor explicar cuál es el significado de ‘binaryprefix:someValue’. Un ejemplo va a dar va a dar más claridad,
    • Ok. He añadido ejemplos.
    • dependiendo del tamaño de la tabla, normalmente, ¿con qué rapidez esta devolver un resultado.
  2. 22

    Nishu,
    aquí está la solución que yo uso periódico. En realidad, es mucho más poderoso que el que necesita ahora mismo, pero creo que se va a utilizar es poder algún día. Sí, es para HBase shell.

    import org.apache.hadoop.hbase.filter.CompareFilter
    import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
    import org.apache.hadoop.hbase.filter.SubstringComparator
    import org.apache.hadoop.hbase.util.Bytes
    
    scan 'yourTable', {LIMIT => 10, FILTER => SingleColumnValueFilter.new(Bytes.toBytes('family'), Bytes.toBytes('field'), CompareFilter::CompareOp.valueOf('EQUAL'), Bytes.toBytes('AAA')), COLUMNS => 'family:field' }
    

    Sólo family:field columna se devuelve con el filtro aplicado. Este filtro puede ser mejorado para realizar más comparaciones complejas.

    Aquí también son sugerencias para que considero más útiles:

    • Segundo enlace que parece muerto. Podría usted por favor, actualice?
  3. 12

    Ya que hubo varias solicitudes para explicar esta respuesta esta respuesta ha sido publicado.

    Ejemplo 1

    Si

    scan '<table>', { COLUMNS => '<column>', LIMIT => 3 }
    

    volvería:

    ROW     COLUMN+CELL
    ROW1    column=<column>, timestamp=<timestamp>, value=hello_value
    ROW2    column=<column>, timestamp=<timestamp>, value=hello_value2
    ROW3    column=<column>, timestamp=<timestamp>, value=hello_value3
    

    a continuación, este filtro:

    scan '<table>', { COLUMNS => '<column>', LIMIT => 3, FILTER => "ValueFilter( =, 'binaryprefix:hello_value2') AND ValueFilter( =, 'binaryprefix:hello_value3')" }
    

    volvería:

    ROW     COLUMN+CELL
    ROW2    column=<column>, timestamp=<timestamp>, value=hello_value2
    ROW3    column=<column>, timestamp=<timestamp>, value=hello_value3
    

    Ejemplo 2

    Si no se admite así:

    scan '<table>', { COLUMNS => '<column>', LIMIT => 3, FILTER => "ValueFilter( !=, 'binaryprefix:hello_value2' )" }
    

    volvería:

    ROW     COLUMN+CELL
    ROW1    column=<column>, timestamp=<timestamp>, value=hello_value
    ROW3    column=<column>, timestamp=<timestamp>, value=hello_value3
    
    • ¿hay alguna opción para sin especificar la Columna de clasificación? Necesito buscar los datos utilizando el valor de filtro. ¿es posible ?
    • Hola, ¿de ejecutar este comando (ejemplo 1)? Es equivocado. No sale lo que usted menciona. Que salidas 0 resultados, como es la comprobación de hello_value2 Y hello_value3 en un único valor de la columna, que, obviamente, no puede coincidir con ambas condiciones.
    • No funciona? Lo hbase versión usas?
    • Estoy usando la versión 1.2.6
    • Hizo ejecutar este comando en la mesa en su ejemplo? como esto no es cómo este ValueFilter funciona cuando se combina con AND
    • Por qué 9 upvotes si esto no funciona de acuerdo con usted? Este fue ejecutado hace dos años en hbase 0.98. Esto fue probado y trabajado en el día.

  4. 6

    Un ejemplo de una búsqueda de texto para un valor BIGBLUE en la tabla t1 con columna de la familia de d:a_content. Un análisis de la tabla se muestran todos los valores disponibles :-

    scan 't1'
    ...
    column=d:a_content, timestamp=1404399246216, value=BIGBLUE
    ...
    

    Para buscar sólo por un valor de BIGBLUE con límite de 1, pruebe el siguiente comando :-

    scan 't1',{ COLUMNS => 'd:a_content', LIMIT => 1, FILTER => "ValueFilter( =, 'regexstring:BIGBLUE' )" }
    
    COLUMN+CELL
    column=d:a_content, timestamp=1404399246216, value=BIGBLUE
    

    Obviamente quitando el límite se muestran todas las ocurrencias de la tabla/cf.

  5. 1

    Para escanear una tabla en hbase sobre la base de la columna valor, SingleColumnValueFilter puede ser utilizado como :

    scan 'tablename' ,
       { 
         FILTER => "SingleColumnValueFilter('column_family','col_name',>, 'binary:1')" 
       } 
    
  6. 0

    De HBAse shell creo que no es posible porque es de alguna forma como la consulta de la que usamos desea encontrar spsecific de datos. Como todos sabemos que HBAse es noSQL así que cuando queremos aplicar la consulta o si tenemos un caso como el de usted, a continuación, creo que se debe utilizar de la Colmena o de CERDO, donde como Hive es tranquilo, buen enfoque porque CERDO necesitamos trabajar con secuencias de comandos.

    De todos modos usted puede obtener una buena guaidence acerca de la colmena a partir de aquí COLMENA integración con HBase y de Aquí

    Si tu único propósito es para ver los datos de no obtener a partir de un código (de cualquier cliente), entonces usted puede utilizar HBase Explorer o un nuevo y muy buen producto, pero está en su versión beta es «HBase manager». Usted puede obtener esta información de la HBase Administrador

    Su sencillo, y lo que es más importante, ayuda a insertar y eliminar datos, la aplicación de filtros en la columna clasificados de interfaz de usuario como otros DBclients. Tener una oportunidad.


    Espero que sea útil para ti 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here