Nag*_*ran 12 hadoop hbase hdfs cloudera sqoop
我已经安装了hadoop和hbase cdh3u2.在hadoop我有一个文件在路径上/home/file.txt.它有像这样的数据
one,1
two,2
three,3
Run Code Online (Sandbox Code Playgroud)
我想将此文件导入hbase.在那里,第一个字段应解析为String,第二个字段解析为整数,然后它应推入hbase.帮我这样做
athanks in dvance ....
Don*_*ner 20
我喜欢使用Apache Pig来摄取HBase,因为它简单,直接且灵活.
在创建表和列族之后,这是一个可以为您完成工作的Pig脚本.要创建表和列族,您将执行以下操作:
$ hbase shell
> create 'mydata', 'mycf'
Run Code Online (Sandbox Code Playgroud)
将文件移动到HDFS:
$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
Run Code Online (Sandbox Code Playgroud)
然后,将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');
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的脚本中,密钥将是strdata.如果要从某个东西创建自己的密钥,请使用FOREACH语句生成密钥.HBaseStorage假设前一个关系中的第一个东西(A::strdata在这种情况下)是关键.
其他一些选择是:
使用某种类型的脚本(即sed,perl,python)将数据推送到hbase shell,该脚本将csv行转换为shell put命令.同样,只有在记录数量很少的情况下才能这样做.
$ 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
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
11874 次 |
| 最近记录: |