我编写了一个Java程序来将数据插入HBase。如果我只是简单地使用
HTable table = new HTable(conf, tableName);
table.put(put);
找到控制台中的hbase日志;但是,如果我把一个"检查表现有条件"在那之前,比如
if(admin.tableExists(tableName))
{
HTable table = new HTable(conf, tableName);
table.put(put);
}
HBase登录控制台显示更多奇怪的信息
14/03/04 11:29:26 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost:2181 sessionTimeout=180000 watcher=catalogtracker-on-org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@11957996
14/03/04 11:29:26 INFO zookeeper.ClientCnxn: Opening socket connection to server /127.0.0.1:2181
14/03/04 11:29:26 INFO zookeeper.RecoverableZooKeeper: The identifier of this process is 23872@localhost
14/03/04 11:29:26 INFO zookeeper.ClientCnxn: Socket connection established to localhost/127.0.0.1:2181, initiating session
14/03/04 11:29:26 INFO zookeeper.ClientCnxn: Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x44558c9b8f009f, negotiated timeout = 180000
14/03/04 11:29:26 INFO zookeeper.ZooKeeper: Session: 0x44558c9b8f009f closed
14/03/04 11:29:26 INFO zookeeper.ClientCnxn: EventThread shut down
没有错误显示但每次程序执行表检查时都会重复显示此无用信息,因此您可以想象如果我要插入数百万个数据,hbase控制台输出就会显示。
有谁能告诉我如何避免HBase显示这个无用的信息(我必须在插入之前检查表是否存在)?我只是想让控制台更干净。
答案 0 :(得分:0)
您可以在HBase的log4j.properties
中更改控制台上显示的日志记录级别。它默认设置为INFO,您可以将其更改为更高的值(WARN / ERROR),这将阻止HBase将INFO级别日志写入控制台。
或者,您可以让HBase将日志打印到File而不是控制台,这样您的控制台就会干净。
以下是您应在log4j.properties
中修改的属性:
hbase.root.logger=INFO,console
hbase.security.logger=INFO,console
hbase.log.dir=.
hbase.log.file=hbase.log
log4j.logger.org.apache.zookeeper=INFO