2011-12-27 24 views
12

He instalado hadoop y hbase cdh3u2. En hadoop tengo un archivo en la ruta /home/file.txt. tiene los datos comoImportar datos de HDFS a HBase (cdh3u2)

one,1 
two,2 
three,3 

Quiero importar este archivo en hbase. en eso, el primer campo debe analizarse como String, y el segundo campo debe analizarse como un entero, y luego debe insertarse en hbase. Me ayudará a hacer esto

aThanks en dvance ....

+0

¿Qué desea su clave sea? ¿Los estás empujando a ambos a una sola familia de columnas, o dos por separado? –

Respuesta

20

me gusta usar Apache Pig para la ingesta en HBase porque es simple, sencillo y flexible.

Aquí hay una secuencia de comandos Pig que haría el trabajo por usted, después de haber creado la tabla y la familia de columnas. Para crear la tabla y la columna de la familia, que va a hacer:

$ hbase shell 
> create 'mydata', 'mycf' 

mover el archivo a HDFS:

$ hadoop fs -put /home/file.txt /user/surendhar/file.txt 

A continuación, escribir el guión de cerdo para almacenar con HBaseStorage (puede que tenga que mirar hasta cómo set up and run Pig):

A = LOAD 'file.txt' USING PigStorage(',') as (strdata:chararray, intdata:long); 
STORE A INTO 'hbase://mydata' 
     USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
       'mycf:intdata'); 

Tenga en cuenta que en el guión anterior, la clave va a ser strdata. Si desea crear su propia clave a partir de algo, use una declaración FOREACH para generar la clave. HBaseStorage asume que lo primero en la relación anterior (A::strdata en este caso) es la clave.


Algunas otras opciones serían:

  • Escribir un trabajo Java MapReduce a hacer lo mismo que el anterior.
  • Interactúe directamente con el HTable con the client y colóquelo fila por fila. Esto solo debe hacerse con archivos mucho más pequeños.
  • Empuje los datos hacia arriba con el shell hbase utilizando algún tipo de script (es decir, sed, perl, python) que transforme las líneas de csv en comandos shell put. De nuevo, esto solo debe hacerse si la cantidad de registros es pequeña.

    $ cat /home/file.txt | transform.pl 
    put 'mydata', 'one', 'mycf:intdata', '1' 
    put 'mydata', 'two', 'mycf:intdata', '2' 
    put 'mydata', 'three', 'mycf:intdata', '3' 
    
    $ cat /home/file.txt | transform.pl | hbase shell 
    
+0

Hola Donald. ¿Podrías echar un vistazo a esta publicación? http://stackoverflow.com/questions/21126483/how-to-have-pig-store-rows-in-hbase-as-text-and-not-bytes –

+0

¡Donald eres un héroe por escribir esta respuesta! –

+0

No olvide registrar los frascos HBase necesarios en ese script PIG. Me gusta "REGISTRAR /usr/lib/hbase/lib/*.jar;" – PinoSan

Cuestiones relacionadas