2011-04-12 151 views
0

O'Reilly大象书中hbase描述的一点点显示使用'hbase'命令行包装器使用hbase运行map-reduce作业。hbase命令与hadoop命令

但是,我们的代码有一个很长的类路径,所以我们希望使用由JobConf.setClassByJar和'hadoop'命令启用的hadoop的lib目录功能。虽然我们可能已经搞砸了,但在我们看来,这对于hbase命令不起作用。

普通的hadoop作业可以调用hbase API吗? hbase命令行是做什么的?

(Hadoop的0.20.2,HBase的对应)

回答

1

您可以使用HBase的API在一个Hadoop的工作。

以下是在作业中使用HBase API的一些代码片段。

进口

import org.apache.hadoop.hbase.HBaseConfiguration; 
import org.apache.hadoop.hbase.client.HTable; 
import org.apache.hadoop.hbase.client.Put; 
import org.apache.hadoop.hbase.util.Bytes; 

这是一个@Override函数内部在我的代码

private HTable hTable = null; 
Configuration hConfig = HBaseConfiguration.create(); 
hConfig.set(Constants.HBASE_CONFIGURATION_ZOOKEEPER_QUORUM, zkQuorum); 
hConfig.set(Constants.HBASE_CONFIGURATION_ZOOKEEPER_CLIENTPORT, zkclientPort); 
hTable = new HTable(hConfig, hbCube); 
... 
hTable.put(subPuts); 

显然不是完整的片段,但正确的imports,并提供正确的价值观你的工作(我只用了一映射器)可以访问HBase API。

希望有所帮助。

0

是的,它会工作。我们如何做到这一点,就是将所有东西(包括HBase jar)封装在一个胖罐子里,然后运行Hadoop命令。

HBase的命令行实用程序,可用于:

  1. 表的访问 - 这可让您扫描表,运行compactions,启用/禁用表,etc.It就像任何其他数据库的外壳,但更强大,因为在我的下一个点

  2. 你可以用命令来运行JRuby的脚本:

    hbase org.jruby.Main <your_script> 
    
  3. 你甚至可以运行ÿ我们的Java的东西,而你在外壳。这可能有助于打印群集属性等。 示例: http://wiki.apache.org/hadoop/Hbase/Shell