O'Reilly Elephant书中对hbase的一点描述显示了使用'hbase'命令行包装器来运行使用hbase的map-reduce作业。
但是,我们的代码有一个很长的类路径,所以我们想要使用JobConf.setClassByJar启用的hadoop的lib目录功能和'hadoop'命令。虽然我们可能搞砸了一些东西,但在我们看来,这对hbase命令没有用。
普通的hadoop作业可以调用hbase API吗?什么是hbase命令行呢?
(hadoop 0.20.2,hbase对应)
答案 0 :(得分:1)
您可以在Hadoop作业中使用HBase API。
以下是在作业中使用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。
希望有所帮助。
答案 1 :(得分:0)
是的,它会起作用。我们如何做,将所有东西(包括HBase jar)打包在胖罐中并运行Hadoop命令。
hbase命令行实用程序可用于:
表访问 - 这使您可以扫描表,运行压缩,启用/禁用表等。它就像任何其他数据库shell一样,但功能更强大,因为在我的下一个点
您可以使用以下命令运行jruby脚本:
hbase org.jruby.Main <your_script>
您甚至可以在shell中运行Java内容。这对于打印群集属性等很有帮助。 这里的例子: http://wiki.apache.org/hadoop/Hbase/Shell