小编Pri*_*nka的帖子

hbase客户端API卡在table.get(行),

我正在使用hbase的本机API编写Hbase Java客户端.

我可以使用我创建的Hbase客户端连接到hbase并运行各种查询.我使用"hbase classpath"命令运行我的hbase客户端.这解决了所有依赖项.

现在我们希望这个hbase客户端成为项目的一部分,并将其作为其组件之一.因此,在集成之后,我们需要将其作为项目的War文件的一部分运行(我们需要将其作为rest API的一部分运行).我添加了hbase-site.xml.hdfs-site.xml和core-site.xml作为资源,并设置为Resource to configuration object.

Configuration conf = HBaseConfiguration.create()

URL hbaseUrl=HbaseManagerServiceImpl.class.getClassLoader().getResource("hbase-site.xml");
conf.addResource(hbaseUrl.toString());
URL hdfsUrl=HbaseManagerServiceImpl.class.getClassLoader().getResource("hdfs-site.xml");
conf.addResource(hdfsUrl.toString());
URL coreUrl=HbaseManagerServiceImpl.class.getClassLoader().getResource("core-site.xml");
conf.addResource(coreUrl.toString());
Run Code Online (Sandbox Code Playgroud)

当我试图只添加core-site.xml时,我收到错误说"包含失败"哪个文件存在于该主机上,因此在资源较旧时添加了该文件,这解决了我的问题.

HTable table = new HTable(conf , "tableName");
Run Code Online (Sandbox Code Playgroud)

我可以成功扫描并获取行操作并获取结果.

Scan scanTable = new Scan();
Get row = new Get(key);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做"Result rowData = table.get(row); "

我的代码卡住了,没有显示任何错误.

我可以使用""hbase classpath"命令运行相同的代码.我是否需要设置$ HADOOP_CLASSPATH和$ HBASE_CLASSPATH变量,我通过jetty webserver运行我的代码.

以下是错误跟踪:

java.io.InterruptedIOException: Giving up trying to location region in meta: thread is interrupted.
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1391)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1169)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1123)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionLocation(HConnectionManager.java:964)
at org.apache.hadoop.hbase.client.RegionServerCallable.prepare(RegionServerCallable.java:72)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:113)
at org.apache.hadoop.hbase.client.HTable.get(HTable.java:780)
at …
Run Code Online (Sandbox Code Playgroud)

java hadoop hbase hadoop2

5
推荐指数
1
解决办法
1174
查看次数

标签 统计

hadoop ×1

hadoop2 ×1

hbase ×1

java ×1