java hbase api挂起

ebdffaop  于 2021-06-09  发布在  Hbase
关注(0)|答案(0)|浏览(215)

我有一个连接到hbase的外部java客户机。我们主要通过批处理mapreduce:tableoutputformat加载数据。数据已通过该方法成功推送到hbasetable。java客户机被用作扫描数据并通过restapi提供数据的一种方式。
我们需要通过restapi添加一个put;不过,我们一看跌期权它就挂了。同一个hbase客户端可以访问hbaseadmin对象并创建通道。我们可以运行get和scan命令,但只要运行put命令,它就会失败。相关代码如下

Configuration config = HBaseConfiguration.create(new org.apache.hadoop.conf.Configuration());
config.set("hbase.zookeeper.quorum", props.getProperty("hbase.zookeeper.quorum"));
config.set("hbase.zookeeper.property.clientPort", "2181");
config.set("zookeeper.znode.parent", props.getProperty("zookeeper.znode.parent", "/hbase"));
confResourceAsInputStream = this.getClass().getClassLoader().getResource("hbase-site.xml").openStream();
InputStream hdfsResourceStream = this.getClass().getClassLoader().getResourceAsStream("hdfs-site.xml");
InputStream coreSiteStream = this.getClass().getClassLoader().getResourceAsStream("core-site.xml");
config.addResource(confResourceAsInputStream);
config.addResource(hdfsResourceStream);
config.addResource(coreSiteStream);

HConnection connection = HConnectionManager.createConnection(config);
HTableInterface putTable = connection.getTable(tableName.getBytes(), null);
try {
    putTable.put(put);
} finally {
    putTable.flushCommits();
    putTable.close();
}

结果:我不知道为什么,但是htableinterface puttable=connection.gettable(tablename.getbytes(),null);只适用于gets。我不得不把它改成下面的样子,结果成功了: HTableInterface putTable = connection.getTable(Bytes.toBytes(tableName);

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题