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
¿Qué desea su clave sea? ¿Los estás empujando a ambos a una sola familia de columnas, o dos por separado? –