J'aime utiliser Apache Pig pour ingest en HBase parce qu'il est simple, simple et flexible.
Voici un script Pig qui ferait le travail pour vous, après avoir créé la table et la famille de colonnes. Pour créer la table et la famille de la colonne, vous allez faire:
$ hbase shell
> create 'mydata', 'mycf'
Déplacer le fichier HDFS:
$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
Ensuite, écrire le script de porc pour stocker avec HBaseStorage (vous pouvez avoir à regarder jusqu'à comment 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');
Notez que dans le script ci-dessus, la clé va être strdata
. Si vous voulez créer votre propre clé à partir de quelque chose, utilisez une instruction FOREACH pour générer la clé. HBaseStorage suppose que la première chose dans la relation précédente (A::strdata
dans ce cas) est la clé.
D'autres options seraient:
- Ecrire un emploi Java MapReduce faire la même chose que ci-dessus.
- Interagissez directement avec le HTable avec the client et mettez en rang par rang. Cela ne devrait être fait qu'avec des fichiers beaucoup plus petits.
Poussez les données vers le haut avec le shell hbase en utilisant une sorte de script (c'est-à-dire, sed, perl, python) qui transforme les lignes de csv en commandes shell put
. Encore une fois, cela ne devrait être fait que si le nombre d'enregistrements est petit.
$ 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
Que voulez-vous que votre clé soit? Êtes-vous en les poussant tous les deux dans une famille de colonne simple, ou deux séparés? –