当我将数据放入hbase表时,出现了一个有趣的问题。在过去的时间里,代码可以运行良好,没有任何问题。但现在它不能正常执行。在下面的代码行中出现了一个奇怪的问题:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.util.Date;
/**
* Test HBase Java API functions
*
* @author elkan1788
*/
public class HBaseAPITest {
private static final Logger logger = LoggerFactory.getLogger(HBaseAPITest.class);
private Connection connect;
private byte[] family = Bytes.toBytes("lg");
@BeforeClass
public void init() throws Exception {
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "master01.office.sao.so,cluster02.office.sao.so");
connect = ConnectionFactory.createConnection(config);
}
@Test
public void testPutRecord() throws Exception {
byte[] rowKey = Bytes.toBytes(Long.toHexString(new Date().getTime()));
byte[] ts = Bytes.toBytes("ts");
byte[] c = Bytes.toBytes("c");
byte[] oip = Bytes.toBytes("oip");
logger.info("Start HBase Put method test...");
Put put = new Put(rowKey);
put.addColumn(family, ts, Bytes.toBytes("2017-01-11"));
put.addColumn(family, c, Bytes.toBytes(1024));
put.addColumn(family, oip, Bytes.toBytes("127.0.0.1"));
// HTable table = new HTable(connect.getConfiguration(), "test");
Table table = connect.getTable(TableName.valueOf("test"));
logger.info("Connect table success.");
logger.info("{}", table.getName().getNameAsString());
logger.info("{}", table.getConfiguration().toString());
table.put(put);
table.close();
logger.info("End HBase Put method test...");
}
@AfterClass
public void destroy() throws Exception {
connect.close();
}
}
我们等了很久 table.put(put)
,但现在抛出任何异常。我试图从搜索引擎得到帮助,但没有任何回应。有人说也许你 hbase client
版本与hbase版本不匹配。然后我试着在同一个版本下使用它们,但仍然不能转换成数据。
在做了一些尝试之后,我把调试信息放在控制台上,它输出如下消息:
18:48:36.908 [main-SendThread(master01.office.sao.so:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x2599208a32c0260, packet:: clientPath:null serverPath:null finished:false header:: 8,4 replyHeader:: 8,38654779738,0 request:: '/hbase/meta-region-server,F response:: #ffffffff0001a726567696f6e7365727665723a3136303230cffffffeacffffff931c23ffffffedffffff8f50425546a15a9636c7573746572303210ffffff947d18ffffffa8ffffff95ffffffe0ffffffb6ffffff992b100183,s{38654771300,38654771300,1484294512812,1484294512812,0,0,0,0,62,0,38654771300}
我也试过使用hbase shell命令执行put函数,可以很好的工作。我的hbase版本是 1.1.2.2.5.3.0-37, rcb8c969d1089f1a34e9df11b6eeb96e69bcf878d, Tue Nov 29 18:48:22 UTC 2016
.
那么这个hbase服务有什么问题吗?我怎样才能修好它。
存在hbase configure设置:hbase config
1条答案
按热度按时间ct2axkht1#
使用htable代替table。也许你的问题可以解决。