hadoopとhbasecdh3u2をインストールしました。hadoopでは、パスにファイルがあります/home/file.txt
。それは次のようなデータを持っています
one,1
two,2
three,3
このファイルをhbaseにインポートしたいと思います。その中で、最初のフィールドは文字列として解析され、2番目のフィールドは整数として解析されてから、hbaseにプッシュされる必要があります。これを行うのを手伝ってください
よろしくお願いします。
シンプルでわかりやすく、柔軟性があるため、HBaseへの取り込みにApachePigを使用するのが好きです。
これは、テーブルと列ファミリーを作成した後、あなたに代わって仕事をするPigスクリプトです。テーブルと列ファミリーを作成するには、次のようにします。
$ hbase shell
> create 'mydata', 'mycf'
ファイルをHDFSに移動します。
$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
次に、HBaseStorageに保存するpigスクリプトを記述します( 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');
上記のスクリプトでは、キーはになっていることに注意してくださいstrdata
。何かから独自のキーを作成する場合は、FOREACHステートメントを使用してキーを生成します。HBaseStorageは、前の関係(A::strdata
この場合)の最初のものがキーであると想定します。
他のいくつかのオプションは次のとおりです。
put
csvの行をシェルコマンドに変換するある種のスクリプト(つまり、sed、perl、python)を使用して、hbaseシェルでデータをプッシュアップします。繰り返しますが、これはレコード数が少ない場合にのみ実行する必要があります。
$ 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