我已经安装了 hadoop 和 hbase cdh3u2。在 hadoop 中,我在路径中有一个文件/home/file.txt
。它有类似的数据
one,1
two,2
three,3
我想将此文件导入 hbase。其中,第一个字段应解析为字符串,第二个字段应解析为整数,然后将其推入 hbase。帮我做这件事
提前谢谢....
我喜欢使用 Apache Pig 摄取到 HBase,因为它简单、直接且灵活。
在您创建表和列族之后,这是一个可以为您完成工作的 Pig 脚本。要创建表和列族,您将执行以下操作:
$ hbase shell
> create 'mydata', 'mycf'
将文件移动到 HDFS:
$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
然后,编写 pig 脚本以使用HBaseStorage存储(您可能需要查看如何设置和运行 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
在这种情况下)是关键。
其他一些选择是:
使用某种将 csv 行转换为 shellput
命令的脚本(即 sed、perl、python)将数据推送到 hbase shell。同样,仅当记录数量很少时才应该这样做。
$ 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