0

如何将我的本地机器上的文本文件加载到远程 Hbase。我参考了上面的命令,但我真的对命令感到困惑

hadoop jar <path to hbase jar> importtsv -Dimporttsv.columns=a,b,c '-Dimporttsv.separator=,' <tablename> <inputdir>  

文本文件的路径和表名和列的地址将在文本文件中。在文本文件中,我有 create 和 put 语句,如何在 Hbase shell 中加载和执行该文件。如果有任何人知道,请打破我的困惑。

脚本文件:

create 'blogpostss', 'post', 'image' 

Run in HBase shell the following to add some data:

put 'blogpostss', 'post1', 'post:title', 'Hello World'
put 'blogpostss', 'post1', 'post:author', 'The Author'
put 'blogpostss', 'post1', 'post:body', 'This is a blog post'
put 'blogpostss', 'post1', 'image:header', 'image1.jpg'
put 'blogpostss', 'post1', 'image:bodyimage', 'image2.jpg'

put 'blogpostss', 'post2', 'post:title', 'Another Post'
put 'blogpostss', 'post2', 'post:title', 'My Second Post'

put 'blogpostss', 'post1', 'post:body', 'This is an updated blog postss'

Following commands retrieve data:

get 'blogpostss', 'post1'
get 'blogpostss', 'post1', { COLUMN => 'post:title' }
get 'blogpostss', 'post1', { COLUMN => 'post:title', VERSIONS => 4 }
get 'blogpostss', 'post1', { COLUMNS => 'post:body', VERSIONS => 3 }

get 'blogpostss', 'post2'
get 'blogpostss', 'post2', { COLUMN => 'post:title' }
get 'blogpostss', 'post2', { COLUMN => 'post:title', VERSIONS => 4 }
4

2 回答 2

1

1.使用终端和ssh到所需的hbase配置的PC。
2.将本地文本文件复制到HDFS。
3.使用 Hbase shell 创建具有所需列族的表。
4.现在执行插入命令。
hadoop jar <path to hbase jar> importtsv -Dimporttsv.columns=a,b,c '-Dimporttsv.separator=,' <tablename> <inputdir>
注意:
hbase jar 的路径 -> 路径,其中 hbase jar 可用。
tablename -> 您现在创建的表名。
inputdir -> 带有文件扩展名的完全限定的 Hdfs 路径。
-Dimporttsv.columns=a,b,c -> column family:qualifer 不得不提。

于 2012-08-24T05:42:40.553 回答
0

你可以试试这个:

1) 对您的 hbase 机器执行 ssh

2)将该文件复制到以下路径:

/home/hbase/hbase-0.98.3-hadoop2/bin (it can be change according to where you have hbase folder)

3)[root@hostname bin]# ./hbase shell ./sample_commands.txt

于 2015-05-18T13:39:18.913 回答