2014-03-04 53 views
1

我編寫了一個Java程序來將數據插入HBase。如果我只是簡單地使用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.h[email protected]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 [email protected] 
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

所以,你說你的代碼工作正常,但你想擺脫控制檯輸出的?此外,它不是無用的信息... – Chaos

+0

是的,我的程序工作正常。我只是想擺脫這些來自控制檯的信息。 – user3019299

回答

0

您可以在HBase的log4j.properties中更改控制檯上顯示的日誌記錄級別。它默認設置爲INFO,您可以將其更改爲更高的值(WARN/ERROR),這將停止HBase將INFO級別日誌寫入控制檯。

或者,您可以讓HBase將日誌打印到文件而不是控制檯,這樣您的控制檯就會變得乾淨。

這裏有屬性,你應該在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 
+0

完美。我會試試這個。 Thankx – user3019299

+0

我將日誌級別更改爲WARN並重新啓動羣集,但仍顯示信息。我不明白爲什麼。 – user3019299

+0

您是否更改了所有動物園管理員相關屬性的日誌級別?從上面的控制檯輸出中,所有日誌條目都與zookeeper相關。 – Chaos