hbase命令与hadoop命令
问题描述:
O'Reilly大象书中hbase描述的一点点显示使用'hbase'命令行包装器使用hbase运行map-reduce作业。hbase命令与hadoop命令
但是,我们的代码有一个很长的类路径,所以我们希望使用由JobConf.setClassByJar和'hadoop'命令启用的hadoop的lib目录功能。虽然我们可能已经搞砸了,但在我们看来,这对于hbase命令不起作用。
普通的hadoop作业可以调用hbase API吗? hbase命令行是做什么的?
(Hadoop的0.20.2,HBase的对应)
答
您可以使用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。
希望有所帮助。
答
是的,它会工作。我们如何做到这一点,就是将所有东西(包括HBase jar)封装在一个胖罐子里,然后运行Hadoop命令。
HBase的命令行实用程序,可用于:
表的访问 - 这可让您扫描表,运行compactions,启用/禁用表,etc.It就像任何其他数据库的外壳,但更强大,因为在我的下一个点
-
你可以用命令来运行JRuby的脚本:
hbase org.jruby.Main <your_script>
你甚至可以运行ÿ我们的Java的东西,而你在外壳。这可能有助于打印群集属性等。 示例: http://wiki.apache.org/hadoop/Hbase/Shell